Wie gehe ich direkt zur Vorlage in Djangos urls.py?

107

Anstatt zu views.py zu gehen, möchte ich, dass es zu einer Vorlage, robots.txt, geht.

TIMEX
quelle
5
Die angegebene Antwort ist korrekt, obwohl Sie sie für etwas wie robots.txt möglicherweise auch auf Webserver-Ebene weiterleiten. Es wird nicht einmal Ihre Django-App erreichen. Für nginx: stackoverflow.com/a/3746344/781695 , Für apache: serverfault.com/a/213455/84120
Benutzer

Antworten:

261

Django 2.0+

Verwenden Sie die klassenbasierten generischen Ansichten, registrieren Sie sich jedoch mit dem Django 2.0+ -Muster.

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/de/2.0/ref/class-based-views/base/#templateview

Django 1.5+

Verwenden Sie die klassenbasierten generischen Ansichten.

from django.views.generic import TemplateView

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

Django <= 1,4

Dokumente: https://docs.djangoproject.com/de/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'}),
)
Yuji 'Tomita' Tomita
quelle
Müssen wir dies für 1.5+ für jeden statischen HTML-Code tun?
Anupam
13

Ein weiteres Update für neuere Versionen und einschließlich MIME-Typ von dieser Site:

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")
]
Oliver Burdekin
quelle