我是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 %}
但是它不起作用。 任何帮助将不胜感激。
答案 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
除此之外-我可能只是写一个序列化器/转换器,以将这些数据更改为可读的模板,然后再将其发送到前端。
希望这会有所帮助!