繁体   English   中英

在Jinja2中显示嵌套字典

[英]Displaying nested dictionary in 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 %}

其中tree是Python字典,例如:

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

dict()Python库函数

问题在于,模板仅显示[1, 2, 3] ,而不显示[1, 2, 3][4, 5, 6]

显然,我对Jinja中的递归工作方式有误解。 有什么提示吗?

您为什么使用“ double 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]}}})

我希望我的英语不好,这对您有用:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM