我有一个清单
users = ['tom', 'dick', 'harry']
在
Jinja
模板中,我想打印除加入tom
之外的所有用户的列表。在将变量传递到模板之前,我不能修改它。我尝试了一个列表理解,并使用了jinja的
reject
过滤器,但我还没能让它们工作,例如。{{ [name for name in users if name != 'tom'] | join(', ') }}
给出语法错误。
如何有条件地加入列表项?
最佳答案
>>> import jinja2
>>> template = jinja2.Template("{{ users|reject('sameas', 'tom')|join(',') }}")
>>> template.render(users=['tom', 'dick', 'harry'])
u'dick,harry'
更新
如果您使用的是jinja 2.8+,请使用
equalto
而不是sameas
作为@dougal注释;sameas
tests with pythonis
,而equalto
tests with==
。