2015-01-20 114 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 ... %}