如何在Django 3.2中正确编写urls.py 解决自定义路由访问报错
问题排查与解决方法
核心问题定位
- 访问路径前缀错误:你将catatkolam应用的路由直接挂载在项目根路径下,并未挂载到
admin/路由分支下。报错信息显示你实际访问的路径是admin/catatkolam/helloworld,该路径只会被admin模块的兜底通配规则匹配,完全不会触达你编写的helloworld自定义视图。 - 路由路径缺失末尾斜杠:Django 3.2的
path()路由采用严格字符串匹配规则,路径末尾的斜杠是路由结构的必要组成部分,缺失会直接导致匹配失败。 - 路由命名拼写错误:应用路由中定义的name参数为
helloword,与对应视图函数名helloworld不一致,后续使用reverse反向解析路由时会直接报错。
具体修改内容
- 修改项目urls.py的路由配置,补全catatkolam路径的末尾斜杠:
# 原配置 path('catatkolam', include('catatkolam.urls')), # 修改为 path('catatkolam/', include('catatkolam.urls')), - 修改应用urls.py的路由配置,补全helloworld路径的末尾斜杠,修正命名拼写:
# 原配置 path('helloworld', views.helloworld , name='helloword') # 修改为 path('helloworld/', views.helloworld, name='helloworld') - 补充说明:Django 3.2默认开启
APPEND_SLASH配置,若访问路径时忘记加末尾斜杠,框架会自动返回301跳转补全斜杠,但该机制仅对可匹配的路由生效,路径前缀错误时不会触发跳转。 - 配置修改完成后,helloworld视图的正确访问地址为
/catatkolam/helloworld/,无需携带admin/前缀。
内容的提问来源于stack exchange,提问作者Bino Oetomo
相关产品推荐
相关产品推荐

