Django:如何将 {% url 'event_manager:index' %} 传递给模板组件?

Django: How to pass {% url 'event_manager:index' %} to template component?

所以现在我硬编码为 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 而不是 django 的 url tag 传递,像这样使用:

{% 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>