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.