Как мне перейти прямо к шаблону в urls.py Django?


107

Вместо того, чтобы переходить к views.py, я хочу, чтобы он перешел к шаблону robots.txt.


5
Данный ответ точен, хотя для чего-то вроде robots.txt вы также можете направить его на уровне веб-сервера. Он даже не дойдет до вашего приложения django. Для nginx: stackoverflow.com/a/3746344/781695 , Для apache: serverfault.com/a/213455/84120
пользователь

Ответы:


261

Django 2.0+

Используйте общие представления на основе классов, но зарегистрируйтесь с помощью шаблона django 2.0+.

from django.urls import path
from django.views.generic import TemplateView

urlpatterns = [
    path('foo/', TemplateView.as_view(template_name='foo.html'))
]

https://docs.djangoproject.com/en/2.0/ref/class-based-views/base/#templateview

Django 1.5+

Используйте общие представления на основе классов.

from django.views.generic import TemplateView

urlpatterns = patterns('',
    (r'^foo/$', TemplateView.as_view(template_name='foo.html')),
)

Джанго <= 1.4

Документы: https://docs.djangoproject.com/en/1.4/ref/generic-views/#django-views-generic-simple-direct-to-template

urlpatterns = patterns('django.views.generic.simple',
    (r'^foo/$',             'direct_to_template', {'template': 'foo_index.html'}),
    (r'^foo/(?P<id>\d+)/$', 'direct_to_template', {'template': 'foo_detail.html'}),
)

Для 1.5+ нам нужно делать это для каждого статического HTML?
Anupam

13

Дальнейшее обновление для более свежих версий, включая MIME-тип с этого сайта:

http://www.techstricks.com/adding-robots-txt-to-your-django-project/

from django.conf.urls import url
from django.views.generic import TemplateView

urlpatterns = [
    #... your project urls
    url(r'^robots.txt$', TemplateView.as_view(template_name="robots.txt", content_type="text/plain"), name="robots_file")
]
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.