【问题标题】:Django templates: Access value list from dictionaryDjango模板:从字典访问值列表
【发布时间】: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 转换为字符串,然后在模板中循环遍历它。

标签: python django python-2.7 django-templates django-views


【解决方案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 %}
    

    【讨论】:

      猜你喜欢
      • 2018-09-11
      • 2014-02-08
      • 2015-08-18
      • 2021-10-17
      • 1970-01-01
      • 2014-02-01
      • 2021-04-10
      • 2019-09-01
      相关资源
      最近更新 更多