Ошибка во время выполнения рекурсивного рендеринга шаблонов в Django - PullRequest
0 голосов
/ 08 февраля 2019

Я хочу реализовать рекурсивный рендеринг шаблонов django для получения пользователей и их подчиненных.Тем не менее, я получил ErrorRuntimeError в / admin / users / 3, максимальная глубина рекурсии превышена в instancecheck .Я использую 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>

Что я делаю не так?

1 Ответ

0 голосов
/ 08 февраля 2019

Я объясняю, почему вы находитесь в бесконечной рекурсии

От djanto включить шаблоны документов :

Предоставленный шаблон отображаетсяв контексте шаблона, который его включает.

Это означает, что вы снова и снова повторяете 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) (во вложенном включенном шаблоне) и снова запускаете итерацию.

...