是否可以在jinja2中执行以下操作:

my_list = ['foo1', 'bar1', 'foo2', 'bar2'] # could be any number of foo's and bar's
[i for i in my_list if 'foo' in i]

我正在查看 map 并加入,例如:
{% my_list|map('???')|join(' ') %}

但是我找不到希望我进行任何通配符搜索的过滤器。最接近的两个看起来像“sameas”和“equalto”,但是它们工作并不安静。

最佳答案

如果您使用的是Jinja2的最新版本(2.7或更高版本),则有一个名为“select”的新过滤器,它似乎可以满足您的要求。 jinja.pocoo.org/docs/dev/templates/#select您可能需要为此编写自己的测试,并在实例化它时将其传递到jinja2对象中。

{{ foobars|select("test") }}

如果您使用的是最新版本(2.8或更高版本),则还可以使用块分配http://jinja.pocoo.org/docs/dev/templates/#block-assignments
{% set my_foo_bars %}
    {%- for item in my_list %}
        {%- if item %}
 {{item}}
        {% endif -%}
    {% endfor -%}
{% endset %}

如果您使用的是旧版本(例如来自Google App Engine的jinja2),则最好在将其传递到模板之前进行处理。

关于jinja2 - Jinja连接字符串列表(如果子字符串匹配),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25211739/

10-13 06:12