2016-06-21 42 views
0

我的視圖函數返回一個字典。我正試圖在我的模板中打印字典。但沒有打印。它打印應用程序/ JSON而不是打印字典的值。任何人都可以幫我解決這個問題嗎?無法打印從模板中的查看功能返回的字典

def display(request): 
if request.method == 'POST' or 'GET' : 
    form = displayForm(request.POST or request.GET or None) 
    val = request.POST.get('ser') 
    form.fields['ser'].choices = [(val, val)] 
    if form.is_valid(): 

     #context = RequestContext(request) 
     grp = request.POST.get('grp_name') 
     env1 = request.POST.get('env') 
     serv = request.POST.get('ser') 

     res ={} 
     res = check_expiry(request.GET,grp,env1,serv) 

     print res 

     return render_to_response('certificate_expiry/display.html', {'form':form ,'res': res}) 
else: 
    form = UrlForm() 

return render(request,'certificate_expiry/display.html',{'form':form}) 


## the html template 
<div> 
    {% for k,v in res.iteritems %} 

     <li> {{ v }} </li> 


    {% endfor %} 
    </div> 

回答

0

在Django模板使用.items訪問詞典:

{% for k,v in res.items %} 
     <li> {{ v }} </li> 
    {% endfor %} 
+0

我用過的物品也被檢查過。仍然它只打印應用程序/ json –

0

你不及格res到模板響應,如果form.is_valid()返回false。相反,您只是將表單傳遞迴模板。

這很可能是爲什麼你沒有看到你的迭代打印出來。

在django模板中,您需要.items而不是.iteritems

另外,您可以嘗試將render_to_response函數更改爲render函數。 (我更喜歡後者)。

return render(request, 'certificate_expiry/display.html', {'form':form,'res':res}) 
+0

我也試過.items。但它仍然只打印application/json。我只是因爲我的表單有效纔得到任何回覆。如果表單無效,那麼即使應用程序/ json不應該正確打印? @marcusshep –

+0

如果表單無效,那麼你不應該得到任何打印出來。 – marcusshep

+0

我用另一個建議更新了我的答案 – marcusshep