在django模板中渲染有序的dic

时间:2017-03-20 18:19:47

标签: python django python-3.x web

我在python中有一个orderdic,我可以使用以下代码访问python中的元素:

for value in orderedDict:
    for val in orderedDict[value]:
        print(orderedDict[value][val])

现在我试图通过django模板渲染它。首先,我使用此代码,它的工作原理。

<body>
{% for value in orderedDict %}
    <tr><td> {{ value }} </td></tr>
{%  endfor %}
</body>

但是当我要访问嵌套值时,我无法获得任何结果。

<body>
{% for value in orderedDict %}
   {% for val in orderedDict[value] %} #I tried orderedDict.value too but doesn't work.
        <tr><td> orderedDict[value][val] </td></tr>
    {%  endfor %}
{%  endfor %}
</body>

澄清一下,这是我有序的一个元素:

 OrderedDict([('name', 'uniquename'), ('default', True), ('t', ['test1']), ('filename', OrderedDict([('t2', False), ('r', OrderedDict([('url', 'https://web.com'), ('f1', 'type2'), ('code', [42])])))

我想要的是&#39; uniquename&#39;和默认的真值。 我可以获得“uniquename&#39;通过我的代码,但无法获得默认值,即True。

你能帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

假设您有一个dict(或Ordered个),如下所示:

h = {
    'a': {
        'aa': 123,
        'bb': 456,
    },
    'b': {
        'aa': 789,
        'bb': 120,
    },
    'c': {
        'aa': 345,
        'bb': 678,
    },
}

然后在模板中你可以这样做:

{% for key, value in h.items %}
   Main key is: {{ key }}
   {% for k, v in value.items %}
        <tr><td> {{ k }}: {{ v }} </td></tr>
   {% endfor %}
{% endfor %}

将渲染:

Main key is: b
aa: 789
bb: 120

Main key is: c
aa: 345
bb: 678

Main key is: a
aa: 123
bb: 456