我有一个清单
users = ['tom', 'dick', 'harry']
Run Code Online (Sandbox Code Playgroud)
在Jinja模板中,我想打印除tom加入之外的所有用户的列表.我无法在将变量传递给模板之前对其进行修改.
我尝试了列表理解,并使用Jinja的reject过滤器,但我无法让这些工作,例如
{{ [name for name in users if name != 'tom'] | join(', ') }}
Run Code Online (Sandbox Code Playgroud)
给出语法错误.
如何有条件地加入列表项?
fal*_*tru 16
>>> import jinja2
>>> template = jinja2.Template("{{ users|reject('sameas', 'tom')|join(',') }}")
>>> template.render(users=['tom', 'dick', 'harry'])
u'dick,harry'
Run Code Online (Sandbox Code Playgroud)
UPDATE
如果您使用的是Jinja 2.8+,请使用equalto而不是sameas@Dougal评论; sameas使用Python is进行equalto测试,同时使用==.
这应该有效,因为不直接支持列表理解.当然,适当的过滤器会更好.
{% for name in users if name != 'tom'%}
{{name}}
{% if not loop.last %}
{{','}}
{% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12664 次 |
| 最近记录: |