Django中request resolver高亮当前URL失效问题求助
问题修正方案
1. 修复URL反向解析报错
你的URL配置里,根路径('')对应的命名是index,但模板里使用{% url '' %}会让Django找不到对应名称的URL规则,直接触发NoReverseMatch错误。把Home链接的反向解析代码改成{% url 'index' %},对应URL配置里的name='index'。
2. 实现访问landing页面时高亮Home导航
要让Home导航项在访问根路径(index视图)和landing页面时都自动添加active类,需要修改判断条件,同时匹配这两个视图名称:
修正后的导航模板代码:
<li class="nav-item"> <a href="{% url 'index' %}" class="nav-link {% if request.resolver_match.view_name in ['index', 'landing'] %}active{% endif %}">Home</a> </li> <li class="nav-item"> <a href="{% url 'page' %}" class="nav-link {% if request.resolver_match.view_name == 'page' %}active{% endif %}">Page</a> </li>
补充说明
request.resolver_match.view_name会返回当前请求匹配到的URL规则的name属性值:访问根路径时返回index,访问landing页面时返回landing,访问page页面时返回page。- 也可以用字符串逗号分隔的写法
{% if request.resolver_match.view_name in 'index,landing' %},效果和列表形式一致,可根据可读性需求选择。
内容的提问来源于stack exchange,提问作者Gandalf
相关产品推荐
相关产品推荐

