使用jinja循环浏览宏列表



我想知道是否可以在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 %}

最新更新