Jinja2是否支持嵌套的if语句?

Sha*_*naC 11 python django django-templates jinja2

我阅读了文档,我不清楚这是对的.我知道你可以使用嵌套for循环,但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 %}
Run Code Online (Sandbox Code Playgroud)

或者格式应该以某种方式不同?

小智 11

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 %}
Run Code Online (Sandbox Code Playgroud)


小智 0

看来有可能。请参阅此处的文档: http: //jinja.pocoo.org/docs/templates/#if

  • 我看到了 - 这不一定是嵌套的 (3认同)