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

时间:2019-01-08 16:40:50

标签: python django django-templates include

我有两个一起使用的模板,一个在另一个内部。内部的图标需要根据父模板的内容进行更改。

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

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">

1 个答案:

答案 0 :(得分:1)

不幸的是,{% 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 %}">