ドキュメントを読みましたが、これが正しいかどうかはわかりません。ネストされたforループを使用できることは知っていますが、ステートメントが異なるように思われる場合。
次のことはできますか?
{% if thing=true %}
<div> something here</div>
{% if diffthing=true %}
<div> something else</div>
{% else %}
<div> third thing</div>
{% endif %}
{% else %}
<div> nothing here </div>
{% endif %}
それともフォーマットはどういうわけか違うべきですか?
Jinja2は、ifステートメントやその他の制御構造を含むネストされたブロックをサポートします。
ブロックのネストとスコープ のドキュメントを参照してください:「ブロックは、より複雑なレイアウトのためにネストできます。」
これの良いユースケースは、条件付きでHTMLを出力するマクロを作成することです。
{# A macro that generates a list of errors coming back from wtforms's validate function #}
{% macro form_error_summary(form, li_class='bg-danger') %}
{# only do the following on error... #}
{% if form.errors %}
<ul class="errors">
{# you can do layers of nesting as needed to render your content #}
{% for _field in form %}
{% if _field.errors %}
{% for error in _field.errors %}
<li class={{li_class}}>{{_field.label}}: {{ error|e }}</li>
{% endfor %}
{% endif %}
{% endfor %}
</ul>
{% endif %}
{% endmacro %}
答えはイエスです。
私はライブアプリケーションであなたと非常によく似たロジックを使用しており、ネストされたifブロックは期待どおりに機能します。コードをクリーンに保たないと少し混乱する可能性がありますが、正常に機能します。
それは可能のようです。こちらのドキュメントを参照してください: http://jinja.pocoo.org/docs/templates/#if