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

时间:2019-04-09 08:38:59

标签: 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'
    }]
}]

1 个答案:

答案 0 :(得分:2)

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

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