循环 Jinja 模板中的任意嵌套数据

kak*_*jan 1 python jinja2

我有以下字典列表,其中每个字典都可以有一个children带有进一步字典列表的键。这可以嵌套任意深度。我如何在 Jinja 中循环它以输出嵌套列表?

[{
    'id': '1',
    'name': 'Level 1',
    'children': [{
        'id': '11',
        'name': 'Level 1.1'
    }, {
        'id': '12',
        'name': 'Level 1.2'
    }, {
        'id': '13',
        'name': 'Level 1.3',
        'children': [{
             'id': '131',
             'name': 'Level 1.3.1'
         }]
    }]
},
{
    'id': '2',
    'name': 'Level 2',
    'children': [{
        'id': '21',
        'name': 'Level 2.1'
    }]
}]
Run Code Online (Sandbox Code Playgroud)

dmi*_*kov 5

recursive在循环中使用该选项for。现在调用特殊loop变量将使用嵌套内容重复循环。

<ul>
    {% for item in data recursive %}
    <li>{{ item.name }}
    {% if item.children %}
        <ul>{{ loop(item.children) }}</ul>
    {% endif %}</li>
    {% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)