在view.py中我使用下面的for
循环来获取json数据
tables = []
column = []
list = []
for row in result:
d = collections.OrderedDict()
schematab = row[0].encode('utf8') + '.' +row[1].encode('utf8')
d = schematab
tables.append(d)
column = []
for row in tables:
d1 = collections.OrderedDict()
tabcol = row.split('.')
query2 = 'call SP_Get_TABCOL_Names('+str(pid)+',"'+str(tabcol[1])+'")'
cursor.execute(query2)
result2 = cursor.fetchall()
for i in result2:
d2 = collections.OrderedDict()
d2 = i[5]
column.append(d2)
d1[row] = column
list.append(d1)
column = []
.....
....
context = RequestContext(request,{'appuser':'admin','result':json.dumps(list)})
return HttpResponse(template.render(context), content_type="text/html")
循环结果是此格式的数据
[
{
"outlet_db.dim_outlet": ["area , ", "area_mask "],
"outlet_db.dim_sales": ["sales1 , ", "sales2 "],
"outlet_db.dim_product": ["produt1", "product2"]
}
]
现在在views.html中使用以下循环
{% for key,value in result %}
{{key}}
{{value}}
{% endfor %}
这只打印json键,但值为空。我需要键和值。
答案 0 :(得分:1)
首先,不要将关键字list
用作变量名。它是Python中的保留字。将其更改为其他名称。其次,基于这行代码,您将列表传递到您的上下文中。您还需要删除json.dumps
方法,因为这会将列表的字符串版本加载到您的上下文变量中。
context = RequestContext(request,{'appuser':'admin','result':json.dumps(list)})
这意味着在您的模板代码中,您必须首先迭代列表,然后才能迭代字典。我刚刚添加了<br>
标记以便于阅读。
{% for x in result %}
{% for key,value in x.items %}
{{key}}<br>
{{value}}<br>
{% endfor %}
{% endfor %}
如果您想坚持使用当前的模板代码,则必须传递字典,但使用.items
方法,如下所示:
{% for key,value in result.items %}
{{key}}<br>
{{value}}<br>
{% endfor %}
答案 1 :(得分:0)
您可以使用dictionary.items
尝试以下方法:
{% for key, value in result.items %}
{{ key }}
{{ value }}
{% endfor %}