2009-11-09 22 views
132

配列arrが私のDjangoテンプレートに渡されています。私は配列内の配列の個々の要素にアクセスしたいと思います。 arr[0]arr[1]などのように、配列全体をループするのではなく、Djangoテンプレートの配列要素にアクセスするには?

Djangoテンプレートでこれを行う方法はありますか?

ありがとうございます。

+1

手助けしたい、他の問題がある場合は、この 'ARRのような項目にアクセスすることができます

{% if username %}{{ username.first }}{% endif %} 

.0'、 'arr.1'、...もう一つの解決策:独自のテンプレートタグ' arr | array_item: "0" 'またはこれに似たものを書きます。 – rphonika

+1

@rphonikaはい、ここの例:http://stackoverflow.com/a/29664945/2714931 – WeizhongTu

答えて

116
arr.0 
arr.1 

+6

ex:arr.variablenameのような動的印刷方法 – karnaf

+0

マジックナンバーなしでこれを行う方法はありますか? 言い換えれば、.0 .1 .2などの "名前"を付けるには? 配列["first name"]、配列["last name"]など。 – cyberjoac

+0

@cyberjoacの場合はdictを使用します。ビューでは、d = {'first_name': 'foo'、 'last_name': 'bar'}です。テンプレート{{d.first_name}}で正しく動作します。 –

267

Djangoのテンプレートのドット表記は、Pythonの4つの異なる表記法のために使用されることに注意してください。それが一致するものが見つかるまでそれがこの順序でそれらをしようと

foo[bar]  # dictionary lookup 
foo.bar  # attribute lookup 
foo.bar()  # method call 
foo[bar]  # list-index lookup 

:テンプレートでは、foo.barは、のいずれかを意味することができます。したがってfoo.3はあなたのオブジェクトがキーとして3を持つdictではないため、3という名前の属性がなく、3という名前のメソッドがないため、リストインデックスを取得します。renderリクエスト時に

+1

** + 1 **乾杯、これは非常に便利でした。 –

+2

最初と最後に 'foo ['bar']'のようなものはありませんか? –

+2

可変インデックスを使用してリスト項目にアクセスする方法がないようです。( –

2

TOU coctextいくつかの情報:exampelため :

return render(request, 'path to template',{'username' :username , 'email'.email}) 

あなたは、このようなテンプレート上でそれにアクセスもできます。 for variabels :

{% if username %}{{ username }}{% endif %} 

for array :

{% if username %}{{ username.1 }}{% endif %} 
{% if username %}{{ username.2 }}{% endif %} 

あなたも同じようにそれを使用views.pyと10に配列オブジェクトに名前を付けることができます:私はあなた

関連する問題