我想知道是否可以在Jinja的另一个宏中循环遍历宏列表。
例如:
{% set macro_list = [macro_one,macro_two,macro_three] %}
{% for macro in macro_list%}
{{ macro(param) }}
{% endfor %}
类似于在python中如何循环遍历函数列表。目前这对我不起作用,因为宏名称被识别为字符串,而不是对宏的引用。
您真的想要引用宏吗?保持简单并尝试使用带参数的宏,请参阅Jijnja文档。然后您可以将代码用作以下示例:
{% macro example(counter) %}
<p>Example {{ counter }}</p>
{% endmacro %}
{% for i in range(1, 4) %}
{{ example(i) }}
{% endfor %}
这给了你:
<p>Example 1</p>
<p>Example 2</p>
<p>Example 3</p>
我已经解决了这个问题。
您还可以在自己的项目中通过在宏前面加上包名称来限定宏(这对包作者非常有用(。
源
一个例子:
[% set list = ["macro_one","macro_two]%]
{% for macro in list%}
{{ package_name[macro](params) }}
{% endfor %}