Как передать имя url в шаблоне Django с помощью контекстной переменной

В моем проекте Django я сталкиваюсь с проблемой передачи имени url в шаблоне Django.

Допустим, у меня есть такая строка в urls.py

...
path('hd2900', hd2900.as_view(), name='hd2900')
...

В шаблоне, если я передаю 'hd2900' как строку в теге {% url %} все работает.

<a class="navbar-brand navbar-left" href="{% url 'hd2900' %}" id="navbarLogoLink">
   <img src="{{ navbarLogoPath }}" alt="{{ navbarLogoAlt }}" id="navbarLogo">
</a>

Но если я использую контекстную переменную из представления, например, в views.py

context['urlName'] = 'hd2900'

Затем в шаблоне, если я изменю 'hd2900' на urlName, я получу ошибку NoReverseMatch at /hd2900. Почему-то он больше не ищет имя в моем шаблоне url.

<a class="navbar-brand navbar-left" href="{% url urlName %}" id="navbarLogoLink">
   <img src="{{ navbarLogoPath }}" alt="{{ navbarLogoAlt }}" id="navbarLogo">
</a>

Вы можете использовать "URL Namespaces". Добавьте "app-name" в ваш urls.py:

app_name = 'myAppName'
...
path('hd2900', hd2900.as_view(), name='hd2900')
...

В своем шаблоне используйте {% url 'myAppName:hd2900' %}:

<a class="navbar-brand navbar-left" href="{% url 'myAppName:hd2900' %}" id="navbarLogoLink">
   <img src="{{ navbarLogoPath }}" alt="{{ navbarLogoAlt }}" id="navbarLogo">
</a>

Я решил эту проблему, удалив тег {% url %}, как показано ниже, но я так и не понял, почему он не работает с тегом {% url %}

Вернуться на верх