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

Sas*_*nko 3 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 %}
Run Code Online (Sandbox Code Playgroud)

为什么我不能窝staticif

使用Django 1.6.7

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

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

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

{% endblock %}
Run Code Online (Sandbox Code Playgroud)

我明白了 Invalid block tag: 'static', expected 'endblock'

upd解决了.包含{% load staticfiles%}在派生模板中.对不起,这不是很明显,首先{% load staticfiles%}是在基本模板中.答案在这里找到

但是我需要进一步解释:为什么{% load staticfiles%}不能从基本模板起作用?

Ada*_*erz 6

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

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