Django定义的update路由未生效 命中slug动态路由问题求助
问题根因
Django的URL路由是从上到下按定义顺序匹配,匹配到第一个符合规则的路由后就会终止后续匹配逻辑。
你当前的路由配置中,带slug参数的通配路由写在了固定路径update/的前面:当发起/update/请求时,Django会把路径中的update识别为slug参数,直接命中textview视图,因此会生成slug为update的实例,永远不会走到后面定义的update路由。
修复方案
调换两个路由的排列顺序,所有固定路径的路由必须放在通配参数路由的前面,调整后的urls.py代码如下:
# Only patterns path('', home, name='home'), path('update/', update, name='update'), path('<slug:slug>/', textview, name='textview'),
额外注意
如果后续新增其他固定路径路由(如/about/、/admin/ 等),都需要放在slug通配路由的前面,避免被通配规则拦截匹配。
内容的提问来源于stack exchange,提问作者Vivek K. Singh
相关产品推荐
相关产品推荐

