2011-03-05 9 views
76

En lugar de ir a views.py, quiero que vaya a una plantilla, robots.txt.¿Cómo voy directamente a la plantilla, en urls.py de Django?

+5

La respuesta dada es exacta, si bien, por algo así como robots.txt, puede encaminar al servidor web nivel también Ni siquiera llegará a tu aplicación django. Para 'nginx': http://stackoverflow.com/a/3746344/781695, para' apache': http://serverfault.com/a/213455/84120 – Medorator

Respuesta

200

Django 1.5 +

Use basados ​​vistas genéricas a la clase:

from django.views.generic import TemplateView 

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

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

Django < = 1,4

Docs: 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 para la actualización 2 años después – shabeer90

+0

Para 1.5+ , ¿tenemos que hacer esto para cada HTML estático? – Anupam

7

una nueva actualización para las versiones más recientes y que incluyen el tipo MIME de este sitio:

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") 
] 
Cuestiones relacionadas