12

我有一个类似于的数据结构

data = {{'value': 1, 'state': False},
        {'value': 2, 'state': True}}

状态和价值将根据外部条件发生变化的地方。

我想使用 Jinja2 for ... else 循环条件,比如

{% for item in data where item.state == True %}
   {{ item.value }}
{% else %}
   no true items
{% endfor %}

我在多个地方使用数据结构,有时都需要显示。我只想保留一个结构的副本,并让 Jinja2 模板负责显示 state == True 的项目或没有任何项目的消息,而不必对其进行预处理Python 在将其提供给模板或将结构拆分为多个部分之前。

这是在带有 Python 2.7 和 Jinja2 2.6 的 Google App Engine 上运行的,数据结构由 memcache 支持。

4

2 回答 2

26

这是你要找的:

 {% for item in data if item.status %}
   {{ item.value }}
 {% else %}
   no true items
 {% endfor %}
于 2012-09-29T19:11:50.987 回答
0

我建议您查看从 Jinja2 中的宏内部访问全局属性,如果您使用的是 Flask,您可以查看模板上下文处理器。对于它的价值,我所做的(在 Flask 中)是创建作为应用程序实例一部分的实例变量;我不明白为什么你不能对 Jinja2 环境做同样的事情。换句话说,将您的字典添加到 Jinja2 的环境中,并验证需要什么(如果有的话)使其在模板中可用。

于 2012-09-29T23:29:50.913 回答