【问题标题】:Displaying nested dictionary in Jinja2在 Jinja2 中显示嵌套字典
【发布时间】:2013-11-24 17:39:53
【问题描述】:

我有以下 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 library function

问题是模板只显示[1, 2, 3] 而不是[1, 2, 3][4, 5, 6] 如预期的那样。

很明显,我误解了 Jinja 中递归的工作原理;有什么提示吗?

【问题讨论】:

    标签: python recursion dictionary jinja2


    【解决方案1】:

    你为什么用'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]}}})
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-16
      • 2014-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-21
      • 2016-07-18
      • 2019-01-16
      相关资源
      最近更新 更多