Django新手开发联系表单访问/contact/出现404错误求助
问题排查与解决方法
1. 核心问题:根路由匹配顺序错误
Django会按照urlpatterns的书写顺序从上到下匹配请求路径,你当前的根路由配置里,Posts应用的路由引入放在了Contact应用前面,且二者都使用空前缀绑定。如果Posts应用的路由中存在通配符规则(比如用于匹配文章详情的<slug>类路由),/contact/请求会优先进入Posts的路由逻辑,找不到对应文章就抛出你看到的「No post found matching the query」404错误,根本不会触发Contact应用的路由。
修复方案:调换根urls.py中两个应用路由的引入顺序:
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('',include('Contact.urls')), path('' , include('Posts.urls')), ]
2. 潜在问题:模板路径配置错误
Django查找模板时,会默认以每个应用下的templates目录作为根路径,你将contact.html放在Posts/templates/contact/目录下,视图中渲染的路径写为"Posts/templates/contact/contact.html"是错误的,后续路由通了之后会触发模板不存在的报错。
修复方案:修改views.py中的render路径:
# 把原来的return行改成下面的 return render(request, "contact/contact.html", {'form':form})
3. 可选优化
可以把Contact应用视图里的context函数改名为contact_view,避免和Django内置的模板上下文命名冲突,降低后续维护的隐患。
内容的提问来源于stack exchange,提问作者Aylin Naebzadeh
相关产品推荐
相关产品推荐

