在Jinja2中显示嵌套字典

adr*_*anp 1 python recursion dictionary jinja2

我有以下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 %}
Run Code Online (Sandbox Code Playgroud)

treePython字典在哪里,例如:

    tree = {"A": {"R": [1, 2, 3], "B": {"R": [4, 5, 6]}}}
Run Code Online (Sandbox Code Playgroud)

并且dict()Python库函数.

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

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

use*_*392 6

你为什么用'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]}}})
Run Code Online (Sandbox Code Playgroud)

我希望我的英语很差,对你有用:)