我是第一次接触json,我在 view.py中有一个名为django jresult的嵌套json对象。我把这个对象传递给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页面中:通过以下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 %}
但它不起作用。任何帮助都将不胜感激。
发布于 2018-07-31 04:38:47
JSON是一种嵌套结构,因此您应该能够使用简单的点符号来访问相对对象的属性。如果要像这样遍历employee
字段,则必须将其作为数组,而不是对象:
试试这个:
{% for obj in jresult.employee %}
<p>{{obj}}</p>
<p>{{obj.id}}</p>
<p>{{obj.gender}}</p>
{% endfor %}
发布于 2018-07-31 04:40:54
看看this (类似的请求),或者(如果它不能工作),您可以实现your own filter来将json转换成所需的形式
编辑:基本上你可以尝试
{{ jresult['employee'] }}
因为正如在第一个链接中所引用的,您在json中有字典。
发布于 2018-07-31 08:31:06
您可以执行{{ jresult‘’employee‘}},然后使用点符号来打印剩余的{{ 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
除此之外,我可能只会编写一个序列化程序/转换器,在将数据发送到前端之前将其更改为可读模板。
希望这能有所帮助!
https://stackoverflow.com/questions/51601390
复制相似问题