无法在Django模板中的if块下嵌套{%static%}标记

时间:2015-01-20 21:30:29

标签: python django django-templates

我在渲染以下模板时获得Invalid block tag: 'static', expected 'endif'

{% load staticfiles %} <!-- in base.html -->/
 <!-- ... -->
{% block content %}
    {% if ava_url %}
        <div><img src="{{ava_url}}"></div>
    {% else %}
        <div><img src="{% static 'img/default_ava.png' %}"></div>
    {% endif %}
{% endblock %}

为什么我不能在static下嵌套if

使用Django 1.6.7

upd 这是块容器中的所有内容。可能是原因。但是,当我删除if

{% load staticfiles %}  <!-- in base.html -->
 <!-- ... -->
{% block content %}

    <div><img src="{% static 'img/default_ava.png' %}"></div>

{% endblock %}

我得到Invalid block tag: 'static', expected 'endblock'

更新已解决。在导出的模板中包含{% load staticfiles%}。抱歉,显而易见的是,{% load staticfiles%}首先位于基本模板中。找到了答案here

但是我需要进一步解释:为什么{% load staticfiles%}无法在基本模板中运行?

1 个答案:

答案 0 :(得分:6)

把它想象成一个import语句,其中基本模板是一个模块中的一个函数,它调用另一个模块中的函数,派生模板,带有一些参数。

&#34; import&#34;在基本模板中不会被派生模板继承,因此它需要被导入&#34;与{% load ... %}