在Django中维护活动选项卡

时间:2018-05-31 18:49:50

标签: django django-templates

我正在开发一个有三个标签的应用程序,其中一个我希望始终标记为活动标签。基于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,但这似乎是很多重复,我觉得有一种更简单的方法来做我想做的事情

1 个答案:

答案 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>

Django Template Tags In Operator