Как “рекурсивный” тег Jinja2 на самом деле работает?

Вы могли использовать шаблон аккумулятора аргумента.

Большая дискуссия об этом здесь:

http://blogs.msdn.com/csharpfaq/archive/2004/03/11/87817.aspx

8
задан Ryan 13 October 2009 в 22:21
поделиться

1 ответ

Как я вижу из вашего кода, вы правильно понимаете рекурсию, за исключением одного: он заменяет итерацию в операторе for, но не обновляет переменную ( категория в вашем коде), изначально использовавшаяся в ней. Таким образом, вложенный цикл выполняет итерацию по дочерним элементам, но устанавливает поиск тегов в исходной категории , а не один передается в цикл loop () .

Я предлагаю изменить метод __ iter __ () , чтобы он возвращал self.items.iteritems () и шаблон на:

<saved_data>
{% for key, item in category recursive %}
        {% if item.children %}
                <category name="{{key}}">
                        {{ loop(item) }}
                </category>
        {% else %}
                <item name="{{ key }}" value="{{ item }}" />
        {% endif %}
{% endfor %}
</saved_data>
8
ответ дан 5 December 2019 в 20:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: