Djangoテンプレートの配列要素にアクセスする方法は?


167

arrDjangoテンプレートに配列が渡されます。私は、(例えば、配列内の配列の個々の要素にアクセスしたいarr[0]arr[1]代わりに配列全体をループするのなど)。

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


4
あなたはこのように項目にアクセスすることができarr.0arr.1...別の解決策は:独自のテンプレートタグの書き込みarr|array_item: "0" や、このような何かを。
rphonika 14

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

回答:


304

Djangoテンプレートのドット表記は、Pythonの4つの異なる表記に使用されることに注意してください。テンプレートでfoo.barは、次のいずれかを意味します。

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

一致するものが見つかるまで、この順序で試行します。だから、foo.3あなたのオブジェクトがキーとして3と辞書ではありませんので、ご自分のリストインデックスを取得します、3という名前の属性を持っていない、と3という名前のメソッドを持っていません。


3
最初と最後はもっと似ているのではfoo['bar']ないですか?
Bob Stein、

2
可変インデックスを使用してリストアイテムにアクセスする方法はないようです:(
Vicky Chijwani 2017年

@VickyChijwaniに同意する:上記の4番目のオプションは無効です。Djangoテンプレートは、変数を使用したリストインデックス検索を実行していないようです
ehacinom

@hiyumeそれを克服するには?
Csaba Toth 2017年

公式のドキュメントでそれが見つからなかったことを理解していません。その投稿のソースを提供できますか?これが今のところ受け入れられない答えにも驚いています。
Kaszanas

149
arr.0
arr.1


11
exのように動的に出力する方法:arr.variablename
Kumar

マジックナンバーなしでこれを行う方法はありますか?つまり、.0 .1 .2などに「名前を付ける」には... array ["first name"]、array ["last name"]などなど
cyberjoac '19 / 12/14

その場合、@ cyberjoacはdictを使用します。ビュー内:d = {'first_name': 'foo'、 'last_name': 'bar'}。テンプレートでは{{d.first_name}}は問題なく動作します。
Ofri Raviv 2014


7

いくつかの情報をrender要求するときcoctext:例:

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、次のように使用できます。

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

他に問題がある場合、私はあなたを助けたいです

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.