2016-05-24 2 views
-1
<div class="menu-top" style="width:715px;"> 
    <ul class="nav nav-pills"> 
    <li> 
     <a href="/link1" 
     {% if request.path == '/phylosophy' %}class="active"{% endif %}> 
     philosophy 
     </a> 
    </li> 
    <li><a href="/link2"><u>{% trans 'product' %}</u></a></li> 
    <li><a href="/link3"><u>{% trans 'contact' %}</u></a></li> 
    <li><a href="/link4"><u>{% trans 'news' %}</u></a></li> 
    </ul> 
</div> 

Мне нужно добавить класс .active к тегу. Что я делаю неправильно?Как добавить класс ACTIVE с помощью шаблона django?

+1

Возможный дубликат [Django динамически получить URL-адрес просмотра и проверить, есть ли его текущая страница] (http: // stackoverflow. com/questions/22047251/django-dynamically-get-view-url-and-check-if-its-the-current-page) – Sayse

+1

Вы пытались напечатать '{{request.path}}', чтобы проверить, действительно равным тому, с чем вы сравниваетесь? – Selcuk

ответ

0

Обычно Django добавляет / к URL, так что может быть в случае изменения в:

{% if request.path == '/phylosophy/' %}class="active"{% endif %}> 

Extra:

Дело такого подхода заключается в том, что, если у вас есть более глубокое URL, например, /phylosophy/list/, вы все равно можете сохранить класс active, поэтому я обычно создаю шаблонный шаблон, называемый startswith:

@register.filter('startswith') 
def startswith(text, starts): 
    if isinstance(text, basestring): 
     return text.startswith(starts) 
    return False 

И затем использовать его как:

<li{% if request.path|startswith:'/phylosophy/' %} class="active"{% endif %}> 

PS:

В случае request.path пусто при печати, возможно, потребуется, чтобы добавить его в контекст процессоров (django.template.context_processors.request), пример :

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'APP_DIRS': True, 
     'DIRS': (
      PROJECT_DIR.child('templates'), 
     ), 
     'OPTIONS': { 
      'context_processors': [ 
       'django.contrib.auth.context_processors.auth', 
       'django.template.context_processors.debug', 
       'django.template.context_processors.i18n', 
       'django.template.context_processors.media', 
       'django.template.context_processors.static', 
       'django.template.context_processors.tz', 
       'django.contrib.messages.context_processors.messages', 
       'django.template.context_processors.request', 
      ], 
      'debug': DEBUG 
     } 
    }, 
] 
Смежные вопросы