2015-01-20 116 views
3

块,我得到Invalid block tag: 'static', expected 'endif',当我作出以下模板无法嵌套{%静态%}标签下,如果在Django模板

{% 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 %} 

我为什么不能if下窝static

使用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%}不能从基本模板工作?

+0

什么是你的Django的版本? – 2015-01-20 21:36:13

+0

django版本1.6.7 – 2015-01-20 21:37:38

+0

您是否将django.contrib.staticfiles添加到已安装的应用程序? – 2015-01-20 21:41:55

回答

6

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

在基础模板中的“导入”没有得到由衍生模板继承,因此它需要“进口”与{% load ... %}