Django模板:从字典访问值列表
Posted
技术标签:
【中文标题】Django模板:从字典访问值列表【英文标题】:Django templates: Access value list from dictionary 【发布时间】:2016-02-29 15:32:59 【问题描述】:在 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 键,但值为空。我需要键和值。
【问题讨论】:
那真的是你的代码吗?我不明白你是如何调用json.dumps()
,它将results
转换为字符串,然后在模板中循环遍历它。
【参考方案1】:
您可以使用 dictionary.items
访问 Django 模板语言中的值
尝试以下方法:
% for key, value in result.items %
key
value
% endfor %
【讨论】:
【参考方案2】:首先,不要使用关键字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 %
【讨论】:
以上是关于Django模板:从字典访问值列表的主要内容,如果未能解决你的问题,请参考以下文章