【发布时间】: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