首页 > 解决方案 > 使用 jinja 循环遍历宏列表

问题描述

我想知道是否可以在 Jinja 的另一个宏中循环遍历宏列表。

例如:

   {% set macro_list =  [macro_one,macro_two,macro_three] %} 
                      
   {% for macro in macro_list%}
   {{ macro(param) }} 
   {% endfor %}

类似于在 python 中你可以循环一个函数列表。目前这对我不起作用,因为宏名称被识别为字符串而不是对宏的引用。

标签: jinja2

解决方案


我已经解决了这个问题。

您还可以通过在您自己的项目中加上您的包名前缀来限定宏(这主要对包作者有用)。

资源

一个例子:

[% set list = ["macro_one","macro_two]%]

{% for macro in list%}

    {{ package_name[macro](params) }}

{% endfor %}

推荐阅读