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

Can not nest {% static %} tag under if block in Django template

当我呈现以下模板时得到 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'

upd 解决了。派生模板中包含 {% load staticfiles%}。抱歉,这并不明显,{% load staticfiles%} 首先位于基本模板中。已找到答案 here

但是我需要进一步的解释:为什么 {% load staticfiles%} 不能在基本模板中工作?

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

基本模板中的 "import" 不会被派生模板继承,因此它需要 "imported" 和 {% load ... %}