flask - 如何从 jinja 宏在 flask 上下文中设置变量?

标签 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,或者如果没有使用宏,则根本不输出。

最佳答案

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

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

请注意 do命令是 not enabled默认情况下,要使其正常工作,您必须启用 jinja2.ext.dodescribed here .

关于flask - 如何从 jinja 宏在 flask 上下文中设置变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49945768/

相关文章:

ansible - 如何按字母顺序运行 Ansible with_fileglob?

python - jinja2 模板中的 url 函数在 Django 中抛出 AttributeError

html - 检查是否在 Jinja2 模板中未选中复选框

python - 我们如何在 jinja2/weasyprint python 中传递图像变量

python - 异步服务调用 Python

flask - '没有找到应用程序。要么在 View 函数内工作,要么推送'RuntimeError : No application found

python - flask : Ignore if one file is not uploaded in form (containing multiple file upload options)

Python Redis 队列

python - 如何让apache在Flask webapp上提供静态文件

Ansible 当条件处于循环中时