当我在另一个模板中包含一个模板时,如何传递源文件的路径?

When I include a template in another template how can I pass the path of a source file?

我有两个放在一起的模板,一个在另一个里面。里面有一个图标,需要根据父模板的内容变化。

我尝试使用变量传递图标路径:

src="{% url 'main_bar_icon' %}"> 

我在父模板中添加了这行代码:

{% with main_bar_icon='../static/dist/img/logout-icon.svg' %}
{% include 'main_bar.html' %}
{% endwith %}

所以,这是我的内部模板:

{% block main_bar %}
    <a href="">
        <img class="app-main-bar-icon" 
             src="{% url 'main_bar_icon' %}">
    </a>
{% endblock main_bar %}

这是我的父模板:

{% block content %}
    {% with main_bar_icon='/dist/img/logout-icon.svg' %}
    {% include 'main_bar.html' %}
    {% endwith %}
{% endblock content%}

在浏览器中我得到这个:

<img class="app-main-bar-icon" src(unknown) alt="icon">

不幸的是,{% url ... %} 模板标签只能用于检索在 urlpatterns.

中定义的视图的 url

根据您的需要,您需要:

  • 使用普通变量,因为您已经为变量分配了路径,只需:<img class="app-main-bar-icon" src="{{ main_bar_icon }}">

  • 或者,为了更适合未来的解决方案,您可以配置 django static files 并使用 {% with main_bar_icon='dist/img/logout-icon.svg' %} 然后 <img class="app-main-bar-icon" src="{% static main_bar_icon %}">