Django从字典对象列表创建嵌套的html列表

2024-06-24 12:42:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Python字典列表,其形式如下

[{'Parent':'top', 'Child':'obj1', 'Level':0},
 {'Parent':'obj1', 'Child':'obj2', 'Level':1},
 {'Parent':'obj1', 'Child':'obj3', 'Level':1},
 {'Parent':'obj2', 'Child':'obj4', 'Level':2},
 {'Parent':'obj4', 'Child':'obj5', 'Level':3}]

我想把它写成基于父对象的嵌套html列表

  • obj1型
    • obj2型
      • 目标4
        • 目标5
    • 目标3

如何在Django模板中执行此操作


Tags: 对象child目标列表字典tophtmllevel
1条回答
网友
1楼 · 发布于 2024-06-24 12:42:28

快速解决方案:

def make_list(d):
    def append_children(parent, d):
        children = [[x['Child']] for x in d if x['Parent'] == parent[0]]
        if children:
            parent.append(children)
            for child in children:
                append_children(child, d)

    results = [[x['Child']] for x in d if x['Parent'] == 'top']
    for parent in results:
        append_children(parent, d)

    return results

将列表传递给这个函数,然后对结果应用unordered_list过滤器。此方法的缺点是即使是为一个元素(<ul><li>elem</li></ul>)也会创建<ul>列表,但是您可以根据需要使用CSS更改显示。在

如果你想要更清晰的HTML,你应该为它编写一个自定义标记或过滤器。在

相关问题 更多 >