是否可以在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]
我正在查看地图并加入,例如:
{% my_list|map('???')|join(' ') %}
但我找不到希望我进行任何通配符搜索的过滤器。最接近的两个看起来像' sameas'并且'等于'但那些不安静的工作。
答案 0 :(得分:0)
如果您使用的是最新版本的Jinja2(2.7或更高版本),则会有一个名为“select”的新过滤器,它似乎可以满足您的需求。 jinja.pocoo.org/docs/dev/templates/#select您可能必须为此编写自己的测试,并在实例化时将其传递给jinja2对象。
{% set my_foo_bars %}
{%- for item in my_list %}
{%- if item %}
{{item}}
{% endif -%}
{% endfor -%}
{% endset %}
如果您使用的是更新版本(2.8或更高版本),则还可以使用块分配http://jinja.pocoo.org/docs/dev/templates/#block-assignments
class Assignee(EmbeddedDocument):
id = ObjectIdField(primary_key=True)
assignee_email = EmailField(required=True)
assignee_first_name = StringField(required=True)
assignee_last_name = StringField()
assignee_time = DateTimeField(required=True, default=datetime.datetime.utcnow)
user = ReferenceField('MongoUser', required=True)
user_id = ObjectIdField(required=True)
class MongoUser(Document):
email = EmailField(required=True, unique=True)
password = StringField(required=True)
first_name = StringField(required=True)
last_name = StringField()
assignees= EmbeddedDocumentListField(Assignee)
如果您遇到旧版本(例如来自Google应用引擎的jinja2),如果可能的话,您可能最好在将其传递到模板之前进行处理。