Django新增contact页面路由配置后请求无响应,调试返回200状态码排查
问题原因
你的配置存在3处路由匹配逻辑错误,返回200是因为请求匹配到了已存在的路由,但命中的是articles视图而非contact视图,所以看起来页面无响应:
- Django路由遵循自上而下匹配、匹配成功即终止的规则,你的应用级urls中两个路由的路径完全相同(均为空字符串),请求永远只会命中排在前面的
views.articles,views.contact完全不会被触发 - 项目级urls重复引入了
articles.urls,且单独配置的path('contact', include('articles.urls'))逻辑错误:当你访问/contact时,会把路径传入articles的urls中匹配,此时articles的urls匹配空路径的规则依然生效,最终还是返回articles视图的内容 - 路由路径未加尾斜杠,不符合Django默认的路由规范,容易出现匹配异常
修正方案
- 修正项目级urls.py,删除重复的include配置,仅保留一次应用引入:
urlpatterns = [ path('admin/', admin.site.urls), path('', include('articles.urls')), ]
- 修正articles应用下的urls.py,给contact路由配置独立路径:
urlpatterns = [ path('', views.articles, name='articles'), path('contact/', views.contact, name='contact'), ]
- (可选优化)模板中的contact链接使用Django路由反向解析写法,避免后续修改路由路径需要同步改模板:
<a href="{% url 'contact' %}">联系我们</a>
内容的提问来源于stack exchange,提问作者Umesh417
相关产品推荐
相关产品推荐

