我有一个自定义的过滤器,它更新代码中的一个全局变量,并在调用时做一些其他的事情。
我只想在模板中调用它,而不将输出赋给变量。
这样做是可行的,但我想删除不必要的变量赋值:
{%- set unused = {'one': 'aaa', "two": "bbb", 'three': 'ccc'} | get_env_var -%}
我尝试了以下方法:
{%- {'one': 'aaa', "two": "bbb", 'three': 'ccc'} | get_env_var -%}
jinja2.exceptions.TemplateSyntaxError: tag name expected
{{'one': 'aaa', "two": "bbb", 'three': 'ccc'} | get_env_var}
jinja2.exceptions.TemplateSyntaxError: expected token 'end of print statement', got ':'
{{{'one': 'aaa', "two": "bbb", 'three': 'ccc'} | get_env_var}}
yaml.composer.ComposerError: expected a single document in the stream
in "<unicode string>", line 3, column 1:
ccc
^
but found another document
in "<unicode string>", line 4, column 1:
---
^
如何只执行自定义过滤器而不捕获其输出?
1条答案
按热度按时间ckx4rj1h1#
假设您的环境已经启用了 expression statement 扩展,那么expression语句-
{% do ... %}
-最适合您的用例。正如文档中所指出的,它的行为类似于变量表达式
{{ ... }}
,但不会打印任何内容。在您的情况下,用法如下: