2015-11-26 83 views
0

在view.py我使用的是下面for循環得到JSON數據Django模板:

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

那真的是你的代碼?我沒有看到你如何調用'json.dumps()',它將'results'轉換爲一個字符串,然後在模板中遍歷它。 – Alasdair

回答

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 %} 
0

可以使用dictionary.items

試試下面的訪問Django的模板語言的值:

{% for key, value in result.items %} 
    {{ key }} 
    {{ value }} 
{% endfor %}