【问题标题】:Jinja2 for loop with conditionsJinja2 for 循环条件
【发布时间】:2012-09-21 05:34:58
【问题描述】:

我有一个类似于

的数据结构
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 支持。

【问题讨论】:

    标签: python google-app-engine jinja2


    【解决方案1】:

    这是你要找的吗:

     {% for item in data if item.status %}
       {{ item.value }}
     {% else %}
       no true items
     {% endfor %}
    

    【讨论】:

      【解决方案2】:

      我建议您查看 Accessing global attributes from inside a macro in Jinja2,如果您使用 Flask,您可以查看 template context processors。对于它的价值,我所做的(在 Flask 中)是创建作为应用程序实例一部分的实例变量;我不明白为什么你不能对 Jinja2 环境做同样的事情。换句话说,将您的字典添加到 Jinja2 的环境中,并验证需要什么(如果有的话)使其在模板中可用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-30
        • 1970-01-01
        • 2016-04-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多