Як перейти до шаблону у urls.py Django?


107

Замість того, щоб перейти до views.py, я хочу, щоб він перейшов до шаблону robots.txt.


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

Відповіді:


261

Джанго 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'}),
)

Для 1.5+ чи потрібно робити це для кожного статичного HTML-коду?
Анупам

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.