是否可以在模板之外使用 Jinja2 宏?

Is it possible to use Jinja2 macros outside of templates?

我正在使用 fetch() javascript API 部分更新页面。 JS 部分将 JSON 发送到我的烧瓶应用程序中的视图,然后 returns 将 JSON 发送到页面。

我想发送呈现的宏(作为 HTML 代码)作为 JSON 响应的一部分,我可以使用它来更新目标页面的一部分。

是否可以在模板之外使用宏以便我可以在我的视图函数中使用它?

谢谢!

是的,就是:使用get_template_attribute

如果您的宏是在 _partial.html 中定义为

{% macro hello(name) %}Hello {{ name }}!{% endmacro %}

然后你就可以像这样在你的视图中执行它了

hello = get_template_attribute('_partial.html', 'hello')
return hello('World')