带有 Django 的 Bootstrap 上的活动标签

bry*_*bee 5 python django twitter-bootstrap

我在 Bootstrap 的导航栏上有一堆链接

<ul class="nav navbar-nav">
  <li ><a href="{% url 'home' %}">Home</a></li>
  <li ><a href="{% url 'about' %}">About</a></li>
  <li ><a href="{% url 'contact' %}">Contact</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

假设我在“主页”部分,我想<li class="active">在 Django 上添加一个文本。

我的第一直觉是将上下文变量用于views.py并执行类似的操作

context = { 'section' : 'home' }
Run Code Online (Sandbox Code Playgroud)

然后做字符串的匹配

<ul class="nav navbar-nav">
  <li {% if section == 'home' %}class="active"{% endif %}><a href="{% url 'home' %}">Home</a></li>
  <li {% if section == 'about' %}class="active"{% endif %}><a href="{% url 'about' %}">About</a></li>
  <li {% if section == 'contact' %}class="active"{% endif %}><a href="{% url 'contact' %}">Contact</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

对我来说,这似乎违反了 DRY,所以我问社区是否有更时尚的方式来表示这一点?

nim*_*ima 5

我更喜欢检查模板中的 URL:

<li {% if "/" == request.path %}class="active"{% endif %}><a href="{% url 'home' %}">Home</a></li>
<li {% if 'mypage1' in request.path %}class="active"{% endif %}><a href="{% url 'my_page_1' %}">My Page 1</a></li>
Run Code Online (Sandbox Code Playgroud)