在Django中设置当前导航菜单项的样式

con*_*000 3 html javascript django jquery menu

我想在Django中设置当前活动的子菜单项.我想知道我该怎么做?我可以想到两种方式:

  • Django Side:我将当前地址与链接进行比较,然后在Django模板中添加
  • jQuery方面:Django模板对活动菜单项没有任何了解,我使用jQuery突出显示

我更倾向于采用jQuery方式,但我的思维方式是好的吗?是不是不推荐这个解决方案?

小智 20

@Liarez在他的回答中写道:

在这个例子中,我为3个网址做了区别,如果你有一个类似于/ posts/whatever/contacts的URL,这可能会很麻烦,因为有2个地方会返回True(第2和第3个li)

所以这是处理这个的更好选择:

{% with request.resolver_match.url_name as url_name %}
    <ul id="menu">
        <li class="{% if url_name == 'home' %}active{% endif %}">Home</li>
        <li class="{% if url_name == 'blog' %}active{% endif %}">Posts</li>
        <li class="{% if url_name == 'contact' %}active{% endif %}">Contact</li>
    </ul>
{% endwith %}
Run Code Online (Sandbox Code Playgroud)

现在我们在url路径中没有重复问题.假设你用这样的名字写了你的url模式,那就行了

url(r'^$', 'home_view', name=u'home'),
url(r'^posts/$', 'posts_view', name=u'blog'),
url(r'^contact/$', 'contact_view', name=u'contact'),
Run Code Online (Sandbox Code Playgroud)