【问题标题】:How to reuse/reset jinja filter "joiner"?如何重用/重置 jinja 过滤器“joiner”?
【发布时间】:2017-03-07 21:16:43
【问题描述】:

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

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

例如:

{% 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 变量?

【问题讨论】:

  • 你为什么宁愿重置你拥有的加入者而不是创建一个新加入者(例如再次发出{% set comma = joiner(", ") %}
  • 奇怪的是,这使得连接器成为“”。生成 '1''2''3' 而不是 '1', '2', '3'。你实现了这种行为吗?你用的是什么神社版本?

标签: python templates filter jinja2


【解决方案1】:

对于那些将在 2017 年后寻找答案的未来人: 至于现在,您实际上可以通过一次又一次地发出{% set comma = joiner(", ") %} 来重新创建具有相同名称的连接器。在这种情况下,joiner 每次都会重置并按照您期望的方式运行。 使用 Ansible 2.8 进行检查

【讨论】:

    猜你喜欢
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    相关资源
    最近更新 更多