2016-06-21 2 views
0

my view関数は辞書を返します。テンプレートに辞書を印刷しようとしています。しかし何も印刷されません。これは、辞書の値を印刷する代わりにアプリケーション/ jsonを印刷します。誰も私がこれを解決するのに役立つことはできますか?テンプレートのビュー関数から返された辞書を印刷できません。

あなたが辞書にアクセスするために .itemsを使用しDjangoテンプレートで
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

form.is_valid() falseを返す場合は、テンプレート応答にresを渡していない

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

私はチェックしたアイテムも使用しました。それでもアプリケーション/ jsonを印刷します –

0

。代わりに、フォームをテンプレートに戻すだけです。

これはおそらく、あなたの反復が印刷されるのを見ていない可能性が高いです。

djangoテンプレートで.iteritemsではなく.itemsが必要です。

また、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

関連する問題