web-dev-qa-db-ja.com

Djangoテンプレートのタプルにアクセスする

 t=[]
 t.append(("a",1))
 t.append(("b",2))
 t.append(("c",3))
 return render_to_response(t.html,  context_instance=RequestContext(request, {'t':t}))

Djangoテンプレートでアクセスにアクセスしたい場合は、forループを使用せずにテンプレートを使用するにはどうすればよいですか。以下を試してみましたが、機能していないようです

    alert('{{t[a]}}');
    alert('{{t[c]}}');
25
Rajeev

あなたのビューコードは次のとおりです:

t=[]
t.extend([('a',1),('b',2),('c',3)])

(OPに記載されているとおりではありません)

{{ t.0.0 }} のようなものです t[0][0] in Python code。これは "a"を与えるはずです。なぜならt.0はリストtの最初の要素であり、それ自体がタプルであり、次に別の.0はタプルの最初の要素です。

{{ t.0.1 }}は1になります。

しかし、あなたの質問では、タプルを作成していて、まるでそれが口述であるかのようにそれにアクセスしようとしています。

それが問題です。

47
Ofri Raviv

dict()関数 を使用してタプルをdictに変換できます:

mydict = dict(t)

そして、テンプレートでは here のようなキーでアイテムにアクセスできます:

{{ mydict|get_item:item.NAME }}
4