如何在jinja宏中设置烧瓶上下文中的变量?

时间:2018-04-20 16:10:07

标签: flask jinja2

我想创建一个宏,如果之前曾调用它需要跟踪。因此,我必须在我的宏中的请求上下文中设置一个变量,但我不知道如何做到这一点。类似的东西:

{% macro my_macro() -%}
    {% set g.foo = "bar" %}   <-- Error
    {{ g.get('foo') }}
{%- endmacro %}

以上结果导致jinja2.exceptions.TemplateRuntimeError: cannot assign attribute on non-namespace object错误。

我知道这可能是滥用宏观概念,也可能对其他解决方案开放。我想跟踪宏的使用,所以我最多可以一次为宏输出一些必需的javascript,或者如果没有使用宏则根本不输出。

1 个答案:

答案 0 :(得分:0)

is a workaround使用do而不是set命令:

{% do g.update({"foo": "bar"}) %}

请注意,do命令默认情况下为not enabled,因此要使此功能正常工作,必须将jinja2.ext.do设为described here