【问题标题】:How do I filter a collection in a jinja2 template ?如何过滤 jinja2 模板中的集合?
【发布时间】:2016-01-24 10:32:41
【问题描述】:

我有一个命名元组的集合,看起来像这样:

[('mountpoint=X',state='UP'),(mountpoint='Y',state='DOWN'),(mountpoint='Z',state='DOWN'...)]

我将此集合传递给我的一个模板。我想根据状态过滤该集合。尝试以下方法无济于事

  {% for state in states|selectattr('state','down') %}
TemplateRuntimeError: no test named 'down'

  {% for state in states|selectattr(state='down') %}
FilterArgumentError: Missing parameter for attribute name

  {% for state in states|select(state='down') %}
No error, but doesn't filter at all.

【问题讨论】:

    标签: python python-2.7 filter jinja2


    【解决方案1】:

    使用equalto 测试:

    {% for state in states|selectattr('state', 'equalto', 'down') %}
    

    【讨论】:

    • {% for state in states|selectattr("state","equalto","DOWN") %} -> TemplateRuntimeError: no test named 'equalto'
    • 那可能是jinja2版本的问题。我有 2.7.3
    • @ychaouche:它是在 Jinja 2.8 中添加的。
    • 在 jinja2.7.3 中尝试了“sameas”测试,对于这种特殊情况,它工作正常,因为我正在比较字符串?
    • @ychaouche:这意味着字符串是cached。你不应该依赖这种行为。
    猜你喜欢
    • 2021-09-21
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多