在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'。
答案 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)
您正尝试在for
和if
块中使用else
循环。但是在关闭for
和if
块之前,您错过了关闭else
循环。
正确的代码如下:
{% if name %}
{% for each in list_one %}
{% endfor %}
{% else %}
{% for each in list_two %}
{{ each }}
{% endfor %}
{% endif %}