Django: Как передать {% url 'event_manager:index' %} компоненту шаблона?
Сейчас я жестко кодирую url, что немного раздражает, если вы перемещаете конечные точки. Вот моя текущая установка для элементов навигационной панели.
# in base.html
{% include 'components/navbar/nav-item.html' with title='Event Manager' url='/eventmanager/' %}
# in components/navbar/nav-item.html
<li>
<a href="{{ url }}">{{ title }}</a>
</li>
Видите, как я сейчас использую url?
Теперь я хочу следующее:
{% include 'components/navbar/link.html' with title='Event Manager' url={% url 'event_manager:index' %} %}
Но, очевидно, это неправильный синтаксис. Как мне это сделать?
Если это невозможно, как мне создать приложение, которое каким-то образом создаст представление, куда я смогу передать все URL с контекстной переменной? В теории это звучит просто, но мне придется каким-то образом вставлять это представление в каждое другое представление.
Вы можете передать его как variable, а не как url tag от django, используйте так:
{% url 'event_manager:index' as myurl %}
{% include 'components/navbar/link.html' with myurl %}
Теперь вы можете передать его в тег include.
Мое решение, которое устранило проблему:
# navbar.html
{% include 'components/navbar/nav-item.html' with title='Event Manager' to_url='event_manager:index' %}
# nav-link.html
{% url to_url as myurl %}
<li>
<a href="{{ myurl }}">{{ title }}</a>
</li>