如何在Django的urls.py中直接跳转到模板?

115 投票
2 回答
51305 浏览
提问于 2025-04-16 13:02

我想让它直接去一个模板文件,叫做robots.txt,而不是去views.py。

2 个回答

14

这里有一个关于更新的内容,适用于更新版本,并且包含了来自这个网站的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")
]
276

Django 2+

注意:在Django 4+中仍然有效。

使用基于类的通用视图,但要按照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/4.1/topics/class-based-views/#usage-in-your-urlconf

Django 1.5+

使用基于类的通用视图。

from django.views.generic import TemplateView

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

#Django <= 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'}),
)

撰写回答