Django模板 - 从字典中获取值

时间:2016-07-08 11:45:01

标签: django django-templates

我将dict传递给我的模板: -

a = {
    1: {
        'a': 'abc',
        'b': 'def'
    },
    2: {
        'a': 'ghi',
        'b': 'jkl'
    },
    'order': [1,2] 
}

现在我需要获取order列表中存在的那些键的值。

在普通的python中我会做的事情如下: -

for id in a['order']:
    print a[id]['a']

在django模板中它的等价物是什么?

这是我尝试过的。它没有工作

{% for id in a.order %}
    {{a.id.a}}
{% endfor %}

1 个答案:

答案 0 :(得分:3)

你必须创建一个简单的template filter来通过键名来获取dict中的项目:

#my_templatetags.py
from django.template.defaulttags import register

@register.filter
def get_item_by_key(dict, key):
    return dict.get(key)

在您的模板中执行以下操作:

{% load my_templatetags %}
<ul>
{% for idx in a.order %}
    {% with item=a|get_item_by_key:idx %}
    <li>
        {{ item.a }} - {{ item.b }}
    </li>
    {% endwith %}
{% endfor %}
</ul>