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模板:从字典访问值列表的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 模板中访问字典列表

Django模板访问字典键

如何访问 Django 模板列表中的字典?

如何在 django 模板中访问字典值

在 django 模板中访问字典值

Django模板访问嵌套数据