Сравнение пронумерованных урлов в шаблоне django
"В urls.py у меня есть:
path("viewer/<str:case>", views.viewer, name="viewer"),
Это работает, когда я перехожу к программе просмотра:
<a class="nav-link dropdown-toggle {% if request.resolver_match.url_name == "viewer" %}active{% endif %}">
Сейчас в nav bar есть подменю, в котором перечислены дела. Мне нужно знать, на какой конкретной странице я нахожусь, чтобы сделать активным один из пунктов меню:
{% for item in cases %}
<li>
<a class="dropdown-item {% if request.get_full_path == "/viewer/{{ item.id }}" %}active{% endif %}" href="/viewer/{{ item.id }}">{{ item.patient_name }}</a>
</li>
request.get_full_path возвращает, например, /viewer/47, а id одного из элементов равен 47. Я пробовал разные комбинации вместо "/viewer/{{ item.id }}", ничего не работает.
В итоге я создал собственный тег шаблона:
tags.py:
@register.simple_tag
def url_case_id(value):
return int(value.split("/")[2])
и использовать его в html:
{% for item in cases %}
{% url_case_id request.get_full_path as id %}
<li>
<a class="dropdown-item {% if id == item.id %}active{% endif %}" href="/viewer/{{ item.id }}">{{ item.name }}</a>
</li>