web-dev-qa-db-fra.com

Comment aller directement au modèle, dans urls.py de Django?

Au lieu d'aller dans views.py, je veux qu'il aille dans un modèle, robots.txt.

102
TIMEX

Django 2.0+

Utilisez les vues génériques basées sur la classe mais enregistrez-vous avec le modèle 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+

Utilisez les vues génériques basées sur les classes.

from Django.views.generic import TemplateView

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

Django <= 1,4

Documents: 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'}),
)
243

Une mise à jour supplémentaire pour les versions plus récentes et incluant le type MIME de ce 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")
]
13
Oliver Burdekin