我有一个json值发送到django模板,如下所示,我无法获得以表格格式显示每个键值对的解决方案。
JSON:
elem: {
k1: v1,
x: {
abc: {
k2: v2,
k3, v3
},
efg: {
k4, v4
}
}
y: {
qwe: {
k5, v5
}
}
}
从上面从Django Views页面发送的json到remplate,前端页面应该以表格格式显示如下所示,
k1 v1
x
abc
k2 v2
k3 v3
efg
k4 v4
y
qwe
k5 v5
请注意,每个(K,V)对的输出都有一行,每个键的一行(没有它的值)有一个json对象作为其值。
只使用像下面这样的普通迭代需要json中的所有键都有一个原始类型的值(字符串或数字),但是上面的json示例将json对象本身作为某些键的值。
{% for k, v in elem.items %}
<tr>
<td> {{k}}</td>
<td> {{v}}</td>
</tr>
{% endfor %}
编辑:如果有可能在模板中递归调用上述代码来解决问题,那就太棒了。
答案 0 :(得分:0)
使用{% for k, v in elem.items %}
迭代字典键,所以我认为你应该在将JSON对象发送到模板上下文之前将其转换为python字典,否则模板逻辑会变得非常复杂。
你应该将它转换为只有一个级别的“flat”python dict(没有任何“嵌套”词组) - 类似于:{"k1":"v1", "x":"", "abc":"", "k2":"v2", "k3": "v3"....}
最好用python做它并使用简单的{%for k, v在模板中的elem.items%},而不是尝试在模板中给出JSON渲染