2016-08-06 3 views
1

私のhtmlにはこのようなテンプレートがあります。ブートストラップクラスを使用します。Django - ウェブページに基づいてアクティブなnavbarテンプレートを変更します

<-- navbar-template.html> 
    <div class="collapse navbar-collapse" id="myNavbar"> 
    <ul class="nav navbar-nav"> 
     <li><a href="/home/">Home</a></li> 
     <li class='active'><a href="/members/">Members</a></li> 
     <li><a href="#">Research</a></li> 
     <li><a href="#">Publications</a></li> 
     <li><a href="#">Links</a></li> 
    </ul> 
    <ul class="nav navbar-nav navbar-right"> 
     <li><a href="#"><span class="glyphicon glyphicon-log-in"></span> Login</a></li> 
    </ul> 
    </div> 

私はアクティブクラスが好きですが、どのリストオブジェクトを変更する必要があるのは、navbar djangoからどのページがロードされたかに基づいています。

私はあなたがhome.htmlファイル内でこのような何かをしたいと思います

<-- HOME --> 
{% include "navbar_template.html" with page="home"} %} 

###Do something with {{page}} variable in order to set the home list tag to active. 

は、私がもしelse文の狂気の量を記述する必要がありますか簡単な方法があります。おそらく、あなたは、この(私は私のページで使用例・ソリューション)のようにそれを行うことができますジャンゴ

答えて

2

でviews.pyで何か:

<ul class="sidebar-nav--primary"> 
    {% url 'main:home' as home %} 
    {% url 'main:work' as work %} 
    {% url 'main:personal' as personal %} 

    <li><a href="{{ home }}" {% if request.path == home %}class="active"{% endif %}>Home</a></li> 
    <li><a href="{{ work }}" {% if request.path == work %}class="active"{% endif %}>Work</a></li> 
    <li><a href="{{ personal }}" {% if request.path == personal %}class="active"{% endif %}>Personal</a></li> 

</ul> 
1

クリーナー方法はcustom template tagを作成することになります。 is_activeような何か:

# Inside custom tag - is_active.py 
from django.template import Library 
from django.core.urlresolvers import reverse 
register = Library() 

@register.simple_tag 
def is_active(request, url): 
    # Main idea is to check if the url and the current path is a match 
    if request.path in reverse(url): 
     return "active" 
    return "" 

そして、このようなあなたのテンプレートでそれを使用する:

# template.html 
{% load is_active %} 
<li><a href="{% url 'home' %}" class="{% is_active request 'home' %}">Home</a></li> 
関連する問題