我正在尝试使用if
来确定哪个块应该填充{% block content %}
。
我的base.html
有一个默认{% block content %}
,此模板正在扩展base.html
。所以我尝试了这个:
{% extends "base.html" %}
{% if condition == True %}
{% block content %}
<div>blah blah blah blah</div>
{% endblock content %}
{% endif %}
如果条件为真,我希望看到blah blah blah blah
,如果不是真的话,我会看到默认的阻止。
但两次我都得到blah blah blah blah
。
然后我尝试了这个:
{% extends "base.html" %}
{% if condition == True %}
{% block content %}
<div>blah blah blah blah</div>
{% endblock content %}
{% else %}
{% block content %}
<div>The Default Thing</div>
{% endblock content %}
{% endif %}
我收到了这个错误:
TemplateAssertionError: block 'content' defined twice
如何将一个块放在if
语句中?
答案 0 :(得分:53)
你无法提出{% block %}
条件;一旦你使用了标签,就会一直填写该块。
将条件置于块中,然后使用super()
指示Jinja使用模板中定义的块的原始内容:
{% extends "base.html" %}
{% block content %}
{% if condition %}
<div>blah blah blah blah</div>
{% else %}
{{ super() }}
{% endif %}
{% endblock content %}