/ / Não é possível aninhar a tag {% static%} no bloco if no modelo do Django - python, django, django-templates

Não é possível aninhar a marca {% static%} sob o bloco no modelo do Django - python, django, django-templates

eu recebo Invalid block tag: "static", expected "endif" quando eu renderizar o seguinte modelo

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

Por que não consigo aninhar static sob if?

Usando o Django 1.6.7

upd Isso tudo está no contêiner de bloco. Pode ser o motivo. No entanto, quando eu removo if

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

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

{% endblock %}

eu recebo Invalid block tag: "static", expected "endblock"

upd resolvido. incluído {% load staticfiles%} no modelo derivado. Desculpe, não era óbvio que {% load staticfiles%} estava no modelo base em primeiro lugar. A resposta foi encontrada Aqui

No entanto, preciso de mais explicações: por que {% load staticfiles%} não funciona a partir do modelo base?

Respostas:

6 para resposta № 1

Pense nisso como uma instrução de importação em que o modelo base é uma função dentro de um módulo que está chamando uma função em outro módulo, o modelo derivado, com alguns parâmetros.

A "importação" no modelo base não é herdada pelo modelo derivado e, portanto, precisa ser "importada" com {% load ... %}