如果我们在一个jinja模板中有多个宏。如何在python中呈现特定宏

如果我们在一个jinja模板中有多个宏。如何在python中呈现特定宏,python,jinja2,Python,Jinja2,例:name=aa.py.jinja2 {% macro Macro1() -%} ... {%- endmacro %} {% macro Macro2() -%} ... {%-endmacro %} python中的渲染 loader = PackageLoader(__name__, "") env = Environment(loader=loader) template = env.get_template("aa.jnja2") aa = template.render("M

例:name=aa.py.jinja2

{% macro Macro1() -%}
...
{%- endmacro %}

{% macro Macro2() -%}
...
{%-endmacro %}
python中的渲染

loader = PackageLoader(__name__, "")
env = Environment(loader=loader)
template = env.get_template("aa.jnja2")

aa = template.render("Macro1")

如何呈现特定的宏。否则,必须为每个宏创建单独的模板

宏可与函数进行比较,并用于调用。您可以先导入
aa.jinja2
,然后调用其
Macro1
函数:

aa = env.from_string('{% import 'aa.jinja2' as aa %}{{ aa.Macro1() }}').render()

如何将参数传递给该宏..即aa.Macro1(obj=obj)您可以使用参数定义宏,例如
{%Macro1(obj)-%}
,然后将值作为关键字参数传递给
render
方法,例如
aa=env.from_字符串('{%import'aa.jinja2'作为aa%}}{aa.Macro1(obj)})。render(obj=value)
,谢谢,我会试试的