Django新增页面已配置urls和views访问报404错误如何解决
错误原因
核心问题为Django路由的尾部斜杠严格匹配规则:你配置的study路由路径带尾部斜杠/,但你访问的地址http://127.0.0.1:8000/study未携带尾部斜杠,默认场景下如果路由无精确匹配、且自动重定向逻辑未触发,就会返回404错误。
除此之外还有几个常见的关联排查点:
- 未将
student_management_app注册到全局settings.py的INSTALLED_APPS列表中,导致app路由未被全局加载 - 修改路由配置后未重启Django开发服务,热加载未生效
- 全局配置中关闭了
APPEND_SLASH参数,无法自动将无斜杠地址重定向到带斜杠的地址
解决方法
临时验证方案
直接访问带尾部斜杠的地址http://127.0.0.1:8000/study/,即可正常匹配路由。
永久兼容方案
如果需要同时支持带/和不带/的访问,修改student_management_app下的urls.py配置即可:
写法1:双路由适配
urlpatterns = [ path('', views.loginPage, name="login"), path('student_view_result/', StudentViews.student_view_result, name="student_view_result"), path('study', StudentViews.study, name="study"), path('study/', StudentViews.study, name="study"), ]
写法2:正则匹配适配
from django.urls import path, include, re_path urlpatterns = [ path('', views.loginPage, name="login"), path('student_view_result/', StudentViews.student_view_result, name="student_view_result"), # ?表示尾部/可选,同时匹配两种格式 re_path(r'^study/?$', StudentViews.study, name="study"), ]
其他排查操作
如果以上方案无效,执行以下检查:
- 确认全局
settings.py中APPEND_SLASH = True(默认开启,未手动修改无需调整) - 确认
student_management_app已添加到settings.py的INSTALLED_APPS列表中 - 重启Django开发服务,确认路由修改已生效
- 确认模板文件
student_template/study.html存在、路径正确,避免路由匹配后因模板缺失返回404
内容的提问来源于stack exchange,提问作者Edwin
相关产品推荐
相关产品推荐

