Skip to main content
 首页 » 编程设计

python之没有尾部斜杠的 Django URL 不起作用

2025年04月02日48freeliver54

这是一个愚蠢的问题。我刚刚创建了一个项目,并一直在努力解决这个问题。

from django.conf.urls import url 
from django.views.generic import TemplateView 
 
urlpatterns = [ 
    url(r'^$', TemplateView.as_view(template_name="index.html")), 
    url(r'^about$', TemplateView.as_view(template_name="about.html")), 
    url(r'^contact$', TemplateView.as_view(template_name="contact.html"), name="contact"), 
    url(r'^test$', TemplateView.as_view(template_name="test_start"), name="test_start"), 
    url(r'^test/sample$', TemplateView.as_view(template_name="test_start"), name="test_start"), 
] 

包含在

from django.conf.urls import url, include 
from django.contrib import admin 
 
urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^', include('frontend.urls')) 
] 

当我转到 localhost:8000/about 时,我被重定向到 localhost:8000/about/ 并在那里收到 404 Not Found。

更新:我在 URLconf 中添加了更多 URL。

更新 2:我的意思是不包括尾部斜线。抱歉。

更新 3:我在 Firefox 中打开了相同的 URL,该 URL 可以正常工作。这可能是重定向和浏览器缓存的问题吗?

请您参考如下方法:

您是否启用了 append_slash 设置? https://docs.djangoproject.com/en/dev/ref/settings/#append-slash

使用它可能有助于使其更明确,并在整个 django 教程中推荐使用它

url(r'^about/$', TemplateView.as_view(template_name="about.html")), 

编辑:

停用 APPEND_SLASH 设置(False)并使用

url(r'^about$', TemplateView.as_view(template_name="about.html")),