我有一个清单

users = ['tom', 'dick', 'harry']

Jinja模板中,我想打印除加入tom之外的所有用户的列表。在将变量传递到模板之前,我不能修改它。
我尝试了一个列表理解,并使用了jinja的reject过滤器,但我还没能让它们工作,例如。
{{ [name for name in users if name != 'tom'] | join(', ') }}

给出语法错误。
如何有条件地加入列表项?

最佳答案

使用reject过滤器和sameas测试:

>>> 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注释;sameastests with pythonis,而equaltotests with==

10-06 10:33
查看更多