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中递归的工作原理; 任何提示?
你为什么用'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)
我希望我的英语很差,对你有用:)