2017-08-01 17 views
0

私はhtml djangoテンプレートにselectディナモを使ってフォームを作成する必要があります:私はtxtファイルから値を読み取り、レンダリングを呼び出すときにdictに保存しますレスポンスこのディクテーションを渡しますが、テンプレート内の値を印刷しようとすると何も印刷されません。 これが私の見解です:djangoのhtmlテンプレートに変数を渡す

def home(request): 

    i=0 
    d = {} 
    with open("static/my_file.txt") as f: 
     for line in f: 
     key=i 
     val = line.rstrip() 
     d[int(key)] = val 
     i=i+1 

    return render_to_response('home.html', var=d) 

、これはHTMLテンプレートでの印刷です:

{% for val in var %} 
    {{ val.value }} 
{% endfor %} 

は私を助けることができますか?

+2

ここで尋ねる前にドキュメントをお読みください。 –

+2

これを修正するために知っておく必要があるのは、ビューとテンプレートの両方です。そして、非常に理解しやすい。 –

答えて

1

上記のjinjaファイルの代わりにこれを試してください。 varの値が必要な場合、varが辞書の場合は、このコードを使用してください。

{% for val in var.values() %} 
    {{ val }} 
{% endfor %} 
1

ビューでエラーを持っている、あなたはdjango.shortcutsから辞書 としてコンテキストを渡す必要があなただけの変数または使用可能なすべての変数(ローカル変数)を渡したい場合は

def home(request): 

    i=0 
    d = {} 
    with open("static/my_file.txt") as f: 
     for line in f: 
     key=i 
     val = line.rstrip() 
     d[int(key)] = val 
     i=i+1 

    return render(request,'home.html', {'var':d}) 
+0

エラーは何ですか?私は同じコードを見ていますが、唯一の変更はスペースを節約するためにOPがおそらく残したものです。 – anonymoose

0

をレンダリングインポートあなたのテンプレートにview.pyでちょうど地元の人々を(合格)あなたのケースでする必要があります:

view.py:

def home(request): 

    i=0 
    d = {} 
    with open("static/my_file.txt") as f: 
     for line in f: 
     key=i 
     val = line.rstrip() 
     d[int(key)] = val 
     i=i+1 

    return render('home.html', locals()) 

テンプレート:

{% for key,value in d.items %} 
    {{ value }} 
{% endfor %} 
関連する問題