Подтвердить что ты не робот

Django динамически получает URL-адрес просмотра и проверяет, является ли его текущая страница

Рассмотрим это основное меню:

<ul class="nav navbar-nav">
  <li class="active"><a href="{% url 'home' %}">Home</a></li>
  <li><a href="{% url 'about' %}">About</a></li>
</ul>

Я пытаюсь передать текущую ссылку страницы активному классу, и я хочу сделать это динамически на основе текущего URL-адреса и URL-адреса представления. Таким образом, когда пользователь посещает страницу about, эта страница теперь имеет активный класс, а на домашней странице нет.

Я бы хотел, чтобы логика работала так внутри тегов <li></li>:

{% if request.get_full_path = "{% url 'home' %}" %}class="active"{% endif %}
{% if request.get_full_path = "{% url 'about' %}" %}class="active"{% endif %}

но ясно, что я не могу вставить два {% ... %} внутри друг друга.

Любые идеи о том, как обойти два гнезда?

4b9b3361

Ответ 1

Я обычно использую наследование шаблонов в своей навигации, аналогично answer alecxe, связанному с. Тем не менее, можно сравнить использование текущего URL-адреса в теге if, как вы пытаетесь сделать.

Тег url позволяет сохранить результат в переменной. Затем вы можете использовать эту переменную в теге if.

{% url 'home' as home_url %}
{% if request.get_full_path == home_url %}class="active"{% endif %}