如何使用Django模板递归地提取层次字典?

2024-09-28 03:13:08 发布

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

我有层次结构:

{
    "content": "Header 1", 
    "name": "folder/name.txt", 
    "decendent": [
         {
            "content": "Header 2", 
            "name": "folder/subfolder/name.txt", 
            "decendent": null
        }, 
        {
            "content": "Header 3", 
            "name": "folder/subfolder2/name.txt", 
            "decendent": [
                {
                    "content": "Header 4", 
                    "name": "folder/subfolder2/subsubfolder1/name.txt", 
                    "decendent": null
                }
                ... etc.
            ]
        }
    ]
}

我必须使用(例如)此模板展开它:

^{pr2}$

我必须将“name”属性放入“a href”标记,并在开始和结束标记之间提取“content”,对于节点的后代,我希望递归地遍历它们。不幸的是,考虑到django模板语言的局限性,我不知道如何使用django模板语言来执行它。在

你能帮帮我吗?在


Tags: djangoname标记txt模板语言层次结构content
1条回答
网友
1楼 · 发布于 2024-09-28 03:13:08

Django可以使用递归模板。如果创建一个名为recurse.html的模板,并将一个data变量与顶层字典一起传递给它:

<ul class="Container">
    <li class="Node ExpandClosed">

        <div class="Expand"></div>

        <div class="Content">
            <a href="{{data.name}}">
                {{data.content}}
            </a>
        </div>

        {% for item in data.decendent %}
            {% include 'recurse.html' with data=item %}
        {% endfor %}

    </li>
</ul>

它应该在第一级显示,然后每次都重新调用它自己,因为它是decendents,并且data重新绑定到新的子树。在

相关问题 更多 >

    热门问题