2011-03-05 57 views
76

而不是去views.py,我希望它去到一個模板,robots.txt。如何直接在Django的urls.py中模板?

+5

給出的答案是正確的,但是,對於類似的robots.txt,你可以將其路由在網絡服務器水平了。它甚至不會到達你的Django應用程序。對於'nginx':http://stackoverflow.com/a/3746344/781695,對於'apache':http://serverfault.com/a/213455/84120 – Medorator 2015-05-22 08:28:08

回答

200

Django的1.5+

使用基於類的通用視圖:

from django.views.generic import TemplateView 

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

文檔:https://docs.djangoproject.com/en/stable/topics/class-based-views/#simple-usage-in-your-urlconf

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'}), 
) 
+70

+1爲更新2年後 – shabeer90 2013-05-29 13:22:30

+0

For 1.5+ ,我們是否需要爲每個靜態HTML執行此操作? – Anupam 2017-01-27 10:26:32

7

的較新版本,並從該網站包括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") 
]