Bagaimana cara mengakses elemen array di templat Django?


167

Saya mendapatkan array yang arrditeruskan ke template Django saya. Saya ingin mengakses elemen individual dari array di array (mis. arr[0], arr[1]Dll) alih-alih melalui seluruh array.

Apakah ada cara untuk melakukan itu di template Django?


4
Anda dapat mengakses item seperti ini arr.0,, arr.1... Solusi lain: tulis tag templat Anda sendiri arr|array_item: "0" atau sesuatu seperti ini.
rphonika

1
@rphonika Ya, contoh di sini: stackoverflow.com/a/29664945/2714931
WeizhongTu

Jawaban:


304

Ingat bahwa notasi titik dalam templat Django digunakan untuk empat notasi yang berbeda dalam Python. Dalam sebuah templat, foo.bardapat berarti salah satu dari:

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

Itu mencoba mereka dalam urutan ini sampai menemukan kecocokan. Jadi foo.3akan membuat Anda daftar indeks Anda karena objek Anda bukan dict dengan 3 sebagai kunci, tidak memiliki atribut bernama 3, dan tidak memiliki metode bernama 3.


3
Bukankah yang pertama dan terakhir lebih seperti foo['bar']?
Bob Stein

2
Tampaknya tidak ada cara untuk mengakses item daftar menggunakan indeks variabel :(
Vicky Chijwani

Setuju dengan @VickyChijwani: opsi keempat di atas tidak valid. Templat Django tampaknya tidak melakukan pencarian daftar-indeks dengan variabel
ehacinom

@hiyume Bagaimana cara mengatasinya?
Csaba Toth

Saya tidak mengerti bahwa saya tidak dapat menemukannya di dokumentasi resmi. Bisakah Anda memberikan sumber untuk posting itu? Saya juga kagum bagaimana jawaban ini tidak diterima saat ini.
Kaszanas

149
arr.0
arr.1

dll.


11
cara mencetak dinamis seperti ex: arr.variablename
Nandha Kumar

Apakah ada cara untuk melakukan ini tanpa angka ajaib? Dengan kata lain untuk "beri nama", 0,1 .2 dll ...? Seperti array ["nama depan"], array ["nama belakang"] dll.
cyberjoac

@cyberjoac dalam hal ini gunakan dict. Pada tampilan: d = {'first_name': 'foo', 'last_name': 'bar'}. Dalam templat {{d.first_name}} akan berfungsi dengan baik.
Ofri Raviv


7

ketika Anda rendermeminta tou coctextbeberapa informasi: untuk exampel:

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

Anda dapat mengaksesnya di template seperti ini: for variabels :

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

for array :

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

Anda juga dapat memberi nama objek array views.pydan sepuluh menggunakannya seperti:

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

jika ada masalah lain saya ingin membantu Anda

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.