我想实现Django递归模板渲染,以获取用户及其下属。但是,我在/ admin / users / 3有一个ErrorRuntimeError 实例检查中超过了最大递归深度。我正在使用django 1.9。代码在下面给出
输入如下:[{name: 'user1@mail.com', id: 1, next: True},
{name: 'user2@mail.com', id: 2, next: True}, {name: 'user3@mail.com', id: 3, next: False}]
users_hierarchy.html
<ul>
{% for user in users %}
<li>{{ user.name }}</li>
{% if user.next %}
<ul>
{% include 'users/user_hierarchy.html' with data=user %}
</ul>
{% endif %}
{% endfor %}
我希望使用HTML,例如:
<ul>
<li>user1@mail.com
<ul>
<li>user2@mail.com
<ul>
<li>user3@mail.com</li>
</ul>
</li>
</ul>
</li>
我做错了什么?
答案 0 :(得分:0)
我解释了为什么您要无限递归
来自djanto include template docs:
包含的模板在包含它的模板的上下文中呈现。
这意味着您要一次又一次地遍历users
:
<ul>
{% for user in users %} <-----(1)<------------------------<
<li>{{ user.name }}</li> |
{% if user.next %} |
<ul> |
{% include 'users/user_hierarchy.html' with data=user %} --(2)->
在(1),您遍历users
。第一次迭代时,您称为include
(2)。此时,您转到(1)(在嵌套的包含模板中)并再次开始迭代。