如果我有一个用户列表说[“Sam”,“Bob”,“Joe”],我想做一些事情,我可以在我的jinja模板文件中输出:
{% for user in userlist %}
<a href="/profile/{{ user }}/">{{ user }}</a>
{% if !loop.last %}
,
{% endif %}
{% endfor %}
我想让输出模板是:
Sam, Bob, Joe
我尝试了上面的代码来检查它是否在循环的最后一次迭代中,如果不是,那么就不要插入逗号,但它不起作用。我怎么做呢?
并使用来自https://jinja.palletsprojects.com/templates/#joiner的joiner
{% set comma = joiner(",") %}
{% for user in userlist %}
{{ comma() }}<a href="/profile/{{ user }}/">{{ user }}</a>
{% endfor %}
它就是为了这个目的而制造的。通常是forloop的连接或检查。Last对于一个列表来说已经足够了,但是对于多组事情来说它是有用的。
一个关于为什么要使用它的更复杂的例子。
{% set pipe = joiner("|") %}
{% if categories %} {{ pipe() }}
Categories: {{ categories|join(", ") }}
{% endif %}
{% if author %} {{ pipe() }}
Author: {{ author() }}
{% endif %}
{% if can_edit %} {{ pipe() }}
<a href="?action=edit">Edit</a>
{% endif %}