Django嵌套include引入子应用路由后模板引用报未注册视图错误如何解决
Django路由命名空间导致url模板标签报错解决方案
问题根因
你在account和nodes两个应用的urls.py中都通过app_name声明了路由命名空间,且nodes应用的路由是嵌套包含在account应用的路由之下的,模板中直接调用{% url 'nodes' %}没有携带命名空间前缀,Django无法匹配到对应的路由规则。
修复方法
直接修改HTML模板中的url标签写法,携带完整的命名空间路径即可:
<li {% if section == 'nodes' %}class="active"{% endif %}> <a class="nav-link" href="{% url 'account:nodes:nodes' %}">Nodes</a> </li>
这里的命名空间规则是:父应用命名空间:子应用命名空间:路由name值,对应你的配置就是account:nodes:nodes。
可选优化(非必须)
如果你不需要为nodes应用单独设置命名空间,可以删除nodes/urls.py中的app_name = 'nodes'配置,此时调用url的写法可以简化为:{% url 'account:nodes' %}
内容的提问来源于stack exchange,提问作者TheSunbathingCrow
相关产品推荐
相关产品推荐

