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

时间:2017-05-06 13:27:23

标签: python for-loop if-statement jinja2

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

我想设置两个条件来选择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 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

您正尝试在forif块中使用else循环。但是在关闭forif块之前,您错过了关闭else循环。

正确的代码如下:

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