Jinja2中的for语句的if语句

1 投票
1 回答
9053 浏览
提问于 2025-04-18 03:06

我有一个网站托管在GAE上,在我的Jinja2模板里,我在一个循环语句里面用了一个条件判断。

我已经通过以下方式启用了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 %}

但是我总是遇到这个错误:

模板语法错误:遇到了未知的标签'endif'。Jinja正在寻找以下标签:'endfor'。需要关闭的最内层块是'for'。

1 个回答

5

你没有正确声明你的 if 标签:

(% if i.date_posted is defined %)

注意这里用的是圆括号,而不是大括号;应该写成这样:

{% if i.date_posted is defined %}

撰写回答