我有以下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 %}
我以为我以前试过,但没有成功,但我一定犯了其他一些我没有意识到的错误。
只要字符串参数是在引号中传递的,就可以了。