jinja2:将字符串作为参数传递给宏



我有以下python代码来调用jinja2。在这段代码中,我想将一个字符串作为参数传递给宏。。。

#!/usr/local/bin/python3
import jinja2
test_template = '''
{% macro testmacro(start, arg1, arg2, arg3) -%}
start_{{arg1}}_{{arg2}}_{{arg3}}
{%- endmacro %}
result = {{ testmacro('begin', A, B, C) }}
'''
template = jinja2.Template(test_template)
rendered = template.render(dict(A='AAA', B='BBB', C='CCC'))
print(rendered)

结果是CCD_ 2。但是,我希望它是begin_AAA_BBB_CCC

如果我用'xyz'作为第一个参数调用宏,那么我希望输出为xyz_AAA_BBB_CCC

我不希望第一个参数作为另一个变量从调用者传递给jinja2。我希望它在模板内部进行硬编码,作为宏调用的参数。

如何在jinja2中执行此操作?

事先非常感谢。

哦,没关系。答案很简单:

{% macro testmacro(start, arg1, arg2, arg3) -%}
{{start}}_{{arg1}}_{{arg2}}_{{arg3}}
{%- endmacro %}

我以为我以前试过,但没有成功,但我一定犯了其他一些我没有意识到的错误。

只要字符串参数是在引号中传递的,就可以了。

最新更新