Jinja2 中的 if 语句
Posted
技术标签:
【中文标题】Jinja2 中的 if 语句【英文标题】:If statement on for statement in Jinja2 【发布时间】:2014-06-01 11:48:22 【问题描述】:我有一个托管在 GAE 中的网站,在我的 Jinja2 模板中,我在 FOR 语句中有一个 IF 语句。
我启用了我的 jinja2.ext.loopcontrols 循环控制,使用:
template_dir = os.path.dirname(__file__)
ENV = jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir),
autoescape=True,
extensions=['jinja2.ext.autoescape',
'jinja2.ext.loopcontrols'])
我的模板如下所示:
% for i in data %
(% if i.date_posted is defined %)
i.date_posted.strftime('%d %b %Y')
% else %
No
% endif %
% endfor %
我不断收到错误:
TemplateSyntaxError:遇到未知标签“endif”。 Jinja 正在寻找以下标签:“endfor”。需要关闭的最里面的块是'for'。
【问题讨论】:
【参考方案1】:您没有正确声明您的if
标签:
(% if i.date_posted is defined %)
注意括号而不是花括号;它应该写成:
% if i.date_posted is defined %
【讨论】:
啊伙计!所有这一切都是为了这么简单的事情。也许是我该买新眼镜的时候了。 :) 谢谢! @JasperJohns:你用什么编辑器?我对 Textmate 和 Sublime Text 使用 Jinja2 syntax bundle,这会使差异更加明显。 我使用的是 Aptana Studio 3,Sublime Text 是免费的吗?我只是看了看,到目前为止我非常喜欢它。感谢您的建议! @JasperJohns:Sublime Text 可以免费评估;当您保存文件以购买许可证以供继续使用时,它会不时唠叨您。 Sublime Text 3 目前处于测试阶段,在正式发布之前是免费的。 @JasperJohns:显然 Aptana Studio 3 支持 Django 模板; Jinja2 很大程度上基于相同的语法,您可以尝试看看 Django 模板语法高亮器是否有帮助。以上是关于Jinja2 中的 if 语句的主要内容,如果未能解决你的问题,请参考以下文章
在 Ansible/Jinja2 中设置 var 的 case 语句