Django表单页跳转回首页路径不匹配、渲染失败如何修复
问题根因
你的路由配置里,首页视图home绑定的是站点根路径'',也就是访问http://你的站点地址/才会命中首页规则,你从来没有配置过/home路径的路由。表单页里写的跳转地址是/home,访问这个地址自然找不到匹配的路由,触发路径未匹配的报错。
首页跳表单能正常生效,是因为你确实配置了form路径的路由,和链接里写的/form完全对应,跳转逻辑本身没问题,只是返回首页的链接地址写错了。
修复方案
两种可行写法,优先推荐第二种Django官方推荐的反向解析写法:
- 直接修正静态路径:把表单页返回链接的href属性从
/home改成/,直接指向站点根路径即可<div class="page-title-add-button-div"> <a class="page-title-add-button-link" href="/"> 返回首页 </a> </div> - 使用Django模板的路由反向解析标签:你在urls.py里已经给每个路由设置了name参数,用
{% url '路由name' %}的写法生成路径,后续就算修改路由的实际路径,只要name不变,模板里的链接不需要批量修改,可维护性更高- 首页跳表单的链接可以同步改成这种写法:
<div class="page-title-add-button-div"> <a class="page-title-add-button-link" href="{% url 'form' %}"> + </a> </div> - 表单页返回首页的链接写法:
<div class="page-title-add-button-div"> <a class="page-title-add-button-link" href="{% url 'home' %}"> 返回首页 </a> </div>
- 首页跳表单的链接可以同步改成这种写法:
额外规范提示:Django默认开启
APPEND_SLASH配置,写路由路径时建议统一加上结尾斜杠,比如把路由写成path('form/', views.form, name='form'),用户访问不带斜杠的地址时会自动301跳转到带斜杠的规范地址,避免出现重复路由、路径匹配异常的问题。
内容的提问来源于stack exchange,提问作者SKYZE
相关产品推荐
相关产品推荐

