我正在开发一个有三个标签的应用程序,其中一个我希望始终标记为活动标签。基于a similar question,我目前在我的基本模板中有以下内容:
<div class="tab">
<a class="{% if request.resolver_match.url_name == 'home' %}active{% endif %}" href="/">Home</a>
<a class="{% if request.resolver_match.url_name == 'questions' %}active{% endif %}" href="/questionManager/">Question Manger</a>
<a class="{% if request.resolver_match.url_name == 'course' %}active{% endif %}" href="/courseManager/">Course Manager</a>
</div>
分别在/
,/questionManager/
和/courseManager/
之间导航时效果很好。问题是,如果我导航到另一个页面(例如,/questionManager/addQuestion/
),则该选项卡不再标记为活动。有什么方法可以保持活动状态,无论我想在哪里导航?具体来说,“问题”标签应标记为对所有/questionManager/*
有效,“课程”标签应标记为对所有/courseManager/*
有效,并且“主页”标签应标记为有效。我知道每当我渲染一个响应时,我可以传递一些变量来指示它是否是上下文中的问题/ course / home,但这似乎是很多重复,我觉得有一种更简单的方法来做我想做的事情
答案 0 :(得分:3)
尝试使用模板标记in
运算符并将'home'等格式更改为'/ home /',并检查每个字符串是否在request.path中,因为它提供了每个相对URL格式'/ questions / 1'。
<div class="tab">
<a class="{% if '/home/' in request.path %}active{% endif %}" href="/">Home</a>
<a class="{% if '/questions/' in request.path %}active{% endif %}" href="/questionManager/">Question Manger</a>
<a class="{% if '/course/' in request.path %}active{% endif %}" href="/courseManager/">Course Manager</a>
</div>