2016-08-06 2 views
1

У меня есть шаблон, который выглядит так в моем html. Он использует классы начальной загрузки.Django - изменить шаблон активной панели на основе веб-страницы

<-- 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 Джанго загружено.

Я думаю, что вы хотели бы сделать что-то вроде этого в файле 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. 

Должен ли я написать сумасшедшую сумму, если другое заявление или есть более простой способ. Возможно, что-то с views.py в Джанго

ответ

2

Вы можете сделать это, как это (например, решение, которое я использую на моей странице):

<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> 
Смежные вопросы