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
ステートメント内にブロックを配置するにはどうすればよいですか?
_{% block %}
_条件付きにすることはできません。タグを使用すると、ブロックは常に埋められます。
代わりに条件付きinsideブロックを配置し、super()
を使用して、テンプレートで定義されているブロックの元のコンテンツを使用するようにJinjaに指示します。
_{% extends "base.html" %}
{% block content %}
{% if condition %}
<div>blah blah blah blah</div>
{% else %}
{{ super() }}
{% endif %}
{% endblock content %}
_