我想创建一个宏,如果之前曾调用它需要跟踪。因此,我必须在我的宏中的请求上下文中设置一个变量,但我不知道如何做到这一点。类似的东西:
{% macro my_macro() -%}
{% set g.foo = "bar" %} <-- Error
{{ g.get('foo') }}
{%- endmacro %}
以上结果导致jinja2.exceptions.TemplateRuntimeError: cannot assign attribute on non-namespace object
错误。
我知道这可能是滥用宏观概念,也可能对其他解决方案开放。我想跟踪宏的使用,所以我最多可以一次为宏输出一些必需的javascript,或者如果没有使用宏则根本不输出。
答案 0 :(得分:0)
有is a workaround使用do
而不是set
命令:
{% do g.update({"foo": "bar"}) %}
请注意,do
命令默认情况下为not enabled,因此要使此功能正常工作,必须将jinja2.ext.do
设为described here。