如果 else 标记引发错误,则内部循环标记的字符串
Posted
技术标签:
【中文标题】如果 else 标记引发错误,则内部循环标记的字符串【英文标题】:Strting for loop tag inside if else tag raise error 【发布时间】:2017-10-04 21:12:39 【问题描述】:在 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'。
【问题讨论】:
在 if 或 else 部分开始for
意味着您也必须在该部分结束它。现在你在 if 和 else 中开始 for
,并在 endif 之后结束它。将它们视为 html 标记,它们成对出现并需要正确嵌套
这对你不起作用。您必须在 if
关闭之前关闭 for
循环。
【参考方案1】:
您正在尝试在if
和else
块中使用for
循环。但是您错过了在关闭 if
和 else
块之前关闭 for
循环。
正确的代码是这样的:
% if name %
% for each in list_one %
% endfor %
% else %
% for each in list_two %
each
% endfor %
% endif %
【讨论】:
【参考方案2】:您必须在 if
子句之前关闭 for
循环。为了决定迭代哪个列表,您可以这样做:
% if name %
% set desired_list = list_one %
% else %
% set desired_list = list_two %
% endif %
% for each in desired_list %
each
% endfor %
【讨论】:
我同意,这就是这样做的方式......(投票赞成)以上是关于如果 else 标记引发错误,则内部循环标记的字符串的主要内容,如果未能解决你的问题,请参考以下文章