2

我有以下 Jinja2 模板:

{% block body %}
    {% for key in tree recursive %}
        {% set outer_loop = loop %}
        {% for subkey in tree[key] %}
            {% if subkey == 'R' %}
                {{ tree[key][subkey] }}
            {% else %}
                {{ outer_loop(dict([(subkey, tree[key][subkey])])) }}
            {% endif %}
        {% endfor %}
    {% endfor %}
{% endblock body %}

Python 字典在哪里,tree例如:

    tree = {"A": {"R": [1, 2, 3], "B": {"R": [4, 5, 6]}}}

并且dict()Python 库函数

问题是模板仅显示[1, 2, 3]而不是[1, 2, 3][4, 5, 6]按预期显示。

显然,我误解了 Jinja 中递归的工作原理;任何提示?

4

1 回答 1

7

你为什么用'double for'来控制它?我正在尝试按如下方式使用“single for”进行编码,看起来没问题:

 from jinja2 import Template

 template = Template(
 """
     {%- for key, value in tree.items() recursive%}
         {%-if key != "R"%}
             {{loop(value.items())}}
         {%- else  %}
             {{value}}
         {%- endif %}
     {%- endfor%}
 """)

 print template.render(tree = {"A": {"R": [1, 2, 3], "B": {"R": [4, 5, 6]}}})

我希望它对我英语不好的你有用:)

于 2013-11-13T01:44:43.993 回答