Как передать имя 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 %}