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

90

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

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

2 ответа

236
Лучший ответ

Джанго 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

Джанго 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'}),
)
  • 0
    Для 1.5+, нужно ли это делать для каждого статического HTML?
11

Дальнейшее обновление для более поздних версий и включая тип 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")
]

Ещё вопросы

Сообщество Overcoder
Наверх
Меню