使用Django模板显示内容

时间:2015-08-17 06:14:59

标签: python json django

我有一个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 %}

编辑:如果有可能在模板中递归调用上述代码来解决问题,那就太棒了。

1 个答案:

答案 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渲染