ฉันจะตรงไปที่เทมเพลตใน urls.py ของ Django ได้อย่างไร


107

แทนที่จะไปที่ views.py ฉันต้องการให้ไปที่เทมเพลต robots.txt


5
คำตอบที่ได้รับนั้นถูกต้องแม้ว่าสำหรับบางอย่างเช่น robots.txt คุณสามารถกำหนดเส้นทางที่ระดับเว็บเซิร์ฟเวอร์ได้เช่นกัน มันจะไม่เข้าถึงแอป django ของคุณด้วยซ้ำ สำหรับnginx: stackoverflow.com/a/3746344/781695สำหรับapache: serverfault.com/a/213455/84120
ผู้ใช้

คำตอบ:


261

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

สำหรับ 1.5+ เราจำเป็นต้องทำสิ่งนี้กับทุก HTML แบบคงที่หรือไม่
Anupam

13

การอัปเดตเพิ่มเติมสำหรับเวอร์ชันล่าสุดและรวมถึงประเภท 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")
]
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.