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>
Вернуться на верх