Django:如何在html中循环遍历嵌套的Json对象

时间:2018-07-30 19:56:15

标签: html json django

我是json的新手,并且在django view.py中有一个嵌套的json对象,名为 jresult 。我将此对象传递给html,并希望以html显示。

在view.py中:

return render(request,'home.html', {'jresult': jresult})

jresult:

{
  "company": "xxx", 
  "address": "xxx", 
  "ceo": "xxx,
  "employee": {
      "Emily": {
        "id": "xxx", 
        "gender": "xxx"
      }, 
      "Tom": {
        "id": "xxx", 
        "gender": "xxx"
      }, 
      "Alex": {
        "id": "xxx", 
        "gender": "xxx"
      }, 
    },  
}

到目前为止,我只能循环显示员工的姓名,并将其显示在html页面中: Emily,Tom和Alex ,并使用以下html代码:

{% for obj in jresult.employee %}
    <p>{{obj}}</p>
{% endfor %}

我也尝试过如何访问ID和性别?

{% for obj in jresult.employee %}
    <p>{{obj}}</p>
    {% for item in jresult.employee.obj.gender %}
        <p>{{item}}</p>
        {% endfor %}
{% endfor %}

但是它不起作用。 任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

JSON是一个嵌套结构,因此您应该能够使用简单的点符号来访问相对对象的属性。如果要像这样遍历它们,则必须将employee字段作为数组而不是对象,

尝试一下:

{% for obj in jresult.employee %}
   <p>{{obj}}</p>
   <p>{{obj.id}}</p>
   <p>{{obj.gender}}</p>
{% endfor %}

答案 1 :(得分:1)

看看this(类似的请求)或(如果它不起作用),您可以实现your own filter以所需的形式转换json

编辑: 基本上您可以尝试

{{ jresult['employee'] }}

因为在第一个链接中已引用,所以json中有字典

答案 2 :(得分:0)

您可以执行{{jresult ['employee'] ['Emily']}},然后使用点符号来打印其余的 {{ jresult['employee']['Emily'].gender }} 如果我没有记错的话,那应该打印出性别。但是,这是无法维护的,因为它要求您在打印之前知道每个键的名称。

Django模板应该允许您执行类似的操作,因为json应该被视为python字典。

{% for employee_key, employee_value in jresult.employee %}
    <p>{{employee_key}}:{{employee_value}}</p>
{% endfor %}

参考:https://docs.djangoproject.com/en/2.0/ref/templates/builtins/#for

除此之外-我可能只是写一个序列化器/转换器,以将这些数据更改为可读的模板,然后再将其发送到前端。

希望这会有所帮助!