【问题标题】:How do I go straight to template, in Django's urls.py?如何在 Django 的 urls.py 中直接进入模板?
【发布时间】:2011-07-09 06:01:12
【问题描述】:

我希望它转到模板 robots.txt,而不是转到 views.py。

【问题讨论】:

标签: python django templates


【解决方案1】:

Django 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

Django 1.5+

使用基于类的通用视图。

from django.views.generic import TemplateView

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

Django

文档: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 都这样做?
【解决方案2】:

进一步更新最新版本,包括来自本网站的 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")
]

【讨论】:

    猜你喜欢
    • 2014-10-05
    • 2012-01-26
    • 1970-01-01
    • 2012-04-25
    • 2013-03-20
    • 2013-05-26
    • 2017-08-29
    • 2015-08-22
    • 1970-01-01
    相关资源
    最近更新 更多