首页 文章

如果else标记引发错误,则在里面标记循环标记

提问于
浏览
0

在jinja模板中,我的脚本中有一个for循环,其中包含一个开始标记 {% for each in list_one %} 和结束标记 {% endfor %} .

我想设置2个条件来选择for循环的起始标记 . 像这样的东西:

{% if name %}
    {% for each in list_one %}
{% else %}
    {% for each in list_two %}
        {{ each }}
{% endif %}
    {% endfor %}

我面临的错误是:

jinja2.exceptions.TemplateSyntaxError:遇到未知标签'endif' . 你可能犯了一个嵌套错误 . Jinja期待这个标签,但目前正在寻找'endfor'或'else' . 需要关闭的最里面的块是'for' .

2 回答

  • 3

    您必须在 if 子句之前关闭 for 循环 . 为了决定迭代哪个列表,你可以这样做:

    {% if name %}
        {% set desired_list = list_one %}
    {% else %}
        {% set desired_list = list_two %}
    {% endif %}
    {% for each in desired_list %}
        {{ each }}
    {% endfor %}
    
  • 0

    您正尝试在 ifelse 块中使用 for 循环 . 但在关闭 ifelse 块之前,你错过了关闭 for 循环 .

    正确的代码如下:

    {% if name %}
        {% for each in list_one %}
        {% endfor %}
    {% else %}
        {% for each in list_two %}
            {{ each }}
        {% endfor %}
    {% endif %}
    

相关问题