如何通过Django访问子级JSON

时间:2014-03-25 17:09:23

标签: json django

所以,我从Django获得了这个JSON:

{'something' : 
    {'value':'somethingName','editable':'false'}
},
{'somethingElse': 
    {'value':'somethingElseName','editable':'true'}
}

并显示如下:

{% for key, value in obj.items %}
    {{ key }} : {{ value }}
{% endfor %}

问题是{{ value }}返回{'value':'somethingName','editable':'false'},我无法通过valueeditable访问{{ value.value }}{{ value.editable }}

我想将{{ value.value }}显示为somethingName而不是整个JSON。

有没有办法通过Django本身访问'sub-level'JSON?

1 个答案:

答案 0 :(得分:1)

您不能使用. notation将模板变量名称用作字典键。 value中的第二个value.value不会被解释为字符串value,因为循环中有一个变量名value

只需将keyvalue分别重命名为obj_keyobj_value

{% for obj_key, obj_value in obj.items %}
    {{ obj_key }} : {{ obj_value.value }}
{% endfor %}

演示:

>>> from django.template import Context, Template
>>> t = Template("""
... {% for obj_key, obj_value in obj.items %}
...     {{ obj_key }} : {{ obj_value.value }}
... {% endfor %}""")
>>> obj = {'something' : {'value':'somethingName','editable':'false'}}

>>> t.render(Context({'obj': obj}))
u'something : somethingName'

希望有所帮助。