@blackbb

Как в django mtpp добавить класс активному пункту меню?

Мой код меню
<ul class="header_ul navbar-nav mt-2 mt-lg-0 margin-auto">
                    {% recursetree menu_top %}
                    <li class="nav-item{% if not node.is_leaf_node %}dropdown{% endif %}">
                        <a {% if node.slug in request.path %} class="current" {% endif %} {% if not node.is_leaf_node %}class="dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"{% else %} href="/{{node.slug}}"{% endif %}>{% if node.icon %}<i class="fa {{node.icon}}"></i> {% else %}{% endif %}{{node.title}}</a>
                        {% if not node.is_leaf_node %}
                        <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
                          {{children}}
                        </ul>
                        {% endif %}
                    </li>
                    {% endrecursetree %}
                  </ul>

Такой код работает, но есть запросы в фильтре такие, что в request.path включают slug некорых пунктов, ну и собственно они становятся активными. Например такой запрос /handbooks/viewofcargo/passazhirskie/ включает два пунтка меню (cargo и handbook) и таких запросов много. Как исклчить такие моменты?
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
maram4ik
@maram4ik
Python developer
Как вариант напиши темплейт фильтр который будет оборачивать node.slug слешами

<a {% if node.slug|to_path in request.path %} class="current" {% endif %} ... </a>

app/templatetags/utils.py
@register.filter
def to_path(value):
    return '/' + value + '/'
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы