Answers:
您希望if
支票为:
{% if not loop.last %}
,
{% endif %}
请注意,您还可以使用If Expression来缩短代码:
{{ "," if not loop.last }}
{{ "," if not forloop.last }}
{{ "," if not loop.last else "" }}
您还可以使用内置的“ join”过滤器(http://jinja.pocoo.org/docs/templates/#join像这样:
{{ users|join(', ') }}
ansible -i localhost, all -m debug -a "msg=\"{{ [ 'a','b','c' ]|join('X') }}\""
并使用joiner
从http://jinja.pocoo.org/docs/dev/templates/#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 %}
以下代码使用python3.5 shell中建议的jinja2连接过滤器 Uli Martens进行了工作:
>>> users = ["Sam", "Bob", "Joe"]
>>> from jinja2 import Template
>>> template = Template("{{ users|join(', ') }}")
>>> template.render(users=users)
'Sam, Bob, Joe'
!
作求反运算符。“ not”拼写为“ not”。