2013-11-22 361 views
8

私はドキュメントを読みましたが、これはまったく問題ではありません。ネストされたforループを使用できることはわかっていますが、if文は異なるようです。Jinja2はネストされたif文をサポートしていますか?

私は次のことができますか?

{% 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 %} 

どういう意味ですか?

答えて

1

答えははいです。

私はライブアプリケーションであなたと非常によく似たロジックを使用しており、入れ子のifブロックは期待通りに機能します。あなたのコードをきれいにしないと少し混乱するかもしれませんが、うまくいきます。

7

Jinja2は、if文やその他の制御構造を含むネストしたブロックをサポートしています。

Block Nesting and Scopeのドキュメントを参照してください。「より複雑なレイアウトのためにブロックをネストすることができます。」それは必ずしもネストされていない - 私は見たこと

{# 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 %} 
関連する問題