如何重用/重置jinja filter“joiner”?

时间:2017-03-07 21:16:43

标签: python templates filter jinja2

根据Jinja的Template Designer Documentation,“一个木匠传递一个字符串,每次调用时都会返回该字符串,除了第一次。”

所以,如果我在我的模板中多次使用它,那么它唯一一次表现如预期的那样是第一次。在任何其他时候,它会在字符串之前应用过滤器。

例如:

{% set comma = joiner(", ") %}
{% for version in ssl_versions %}
{{ comma() }}'{{ version }}'
{% endfor %}

{% for backend in auth_backends %}
{{ comma() }}{{ backend }}
{% endfor %}

将输出:

'1', '2', '3'
, backend1, backend2

相反,我希望我的模板看起来像这样:

'1', '2', '3'
backend1, backend2

除了创建多个加入者之外,我还能做些什么来实现这种行为?

有没有办法重置我的joiner变量?

1 个答案:

答案 0 :(得分:1)

对于未来的人,他们将在2017年之后寻找答案: 到目前为止,实际上,您可以一次又一次发出{% set comma = joiner(", ") %}来重新创建具有相同名称的连接器。在这种情况下,连接器每次都会重置,并以您期望的方式运行。 已检查Ansible 2.8