我的内存中有一个树结构,我想使用Django模板以HTML呈现。
class Node(): name = "node name" children = []
将有一些对象root是Node,并且children是的列表Node。root将在模板的内容中传递。
root
Node
children
我发现这个的如何可能实现一个讨论,但海报表明,这在生产环境中可能不是很好。
有人知道更好的方法吗?
我认为规范的答案是:“不要”。
相反,您可能应该做的是在视图代码中分解内容,因此只需遍历模板中的(in | de)凹痕即可。我想我可以通过在循环遍历树时将缩进和缩进附加到列表中,然后将该“旅行”列表发送到模板来做到这一点。(然后,模板将插入该列表<li>并</li>从该列表中插入,以“理解”它来创建递归结构。)
in | de
<li>
</li>
我也很确定递归地包含模板文件确实是一种错误的方式…
使用with模板标记,我可以做树/递归列表。
样例代码:
主模板:假设“ all_root_elems”是树的一个或多个根的列表
“ all_root_elems”
<ul> {%for node in all_root_elems %} {%include "tree_view_template.html" %} {%endfor%} </ul>
tree_view_template.html呈现nested ul,li并使用node模板变量,如下所示:
<li> {{node.name}} {%if node.has_childs %} <ul> {%for ch in node.all_childs %} {%with node=ch template_name="tree_view_template.html" %} {%include template_name%} {%endwith%} {%endfor%} </ul> {%endif%} </li>