Django şablonundaki dizi öğelerine nasıl erişilir?


167

arrDjango şablonuma geçirilen bir dizi alıyorum . Tüm dizi döngü yerine dizi (örn. arr[0], arr[1]Vb.) Dizinin tek tek öğelerine erişmek istiyorum .

Bunu bir Django şablonunda yapmanın bir yolu var mı?


4
Böyle öğeye erişebilir arr.0, arr.1... Başka bir çözüm: Kendi şablon etiketini yazmak arr|array_item: "0" veya böyle bir şey.
— rphonika

1
@rphonika Evet, buraya örnek: stackoverflow.com/a/29664945/2714931
— WeizhongTu

Yanıtlar:


305

Bir Django şablonundaki nokta gösteriminin Python'daki dört farklı gösterim için kullanıldığını unutmayın. Bir şablonda foo.barşunlardan herhangi biri anlamına gelebilir:

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

Bir eşleşme bulana kadar onları bu sırayla dener. Bu nedenle foo.3, liste dizininizi alacaksınız çünkü nesneniz anahtar olarak 3 ile bir dikte değil, 3 adlı bir özniteliğe sahip değil ve 3 adlı bir yöntemi yok.


3
İlk ve son daha çok değil foo['bar']mi?
— Bob Stein

2
Değişken bir dizin kullanarak bir liste öğesine erişmenin yolu yok gibi görünüyor :(
— Vicky Chijwani

@VickyChijwani ile aynı fikirde: yukarıdaki dördüncü seçenek geçerli değil. Django şablonları değişkenlerle liste dizini aramaları yapmıyor gibi görünüyor
— ehacinom

@hiyume Bunu nasıl aşabilirim?
— Csaba Toth

Bunu resmi belgelerde bulamadığımı anlamıyorum. Bu yazı için bir kaynak sağlayabilir misiniz? Ayrıca şu anda bu sorunun nasıl kabul edilmediğine de hayran kaldım.
— Kaszanas

149
arr.0
arr.1

vb.


11
ex ex gibi dinamik yazdırmak için nasıl: arr.variablename
— Kumar

Bunu sihirli sayılar olmadan yapmanın bir yolu var mı? Başka bir deyişle .0 .1 .2 vb. "Adlandırmak" ...? Dizi ["ad"], dizi ["soyadı"] vb.
— Gibi

@cyberjoac bu durumda bir dikte kullanın. Görünümde: d = {'first_name': 'foo', 'last_name': 'bar'}. {{D.first_name}} şablonunda gayet iyi çalışacak.
— Ofri Raviv


7

ne zaman renderbir istek pa coctextbazı bilgiler: exampel için:

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

buna şablon üzerinde erişebilirsiniz: for variabels :

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

for array :

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

Ayrıca dizi nesnelerini adlandırabilir views.pyve on nesneyi şöyle kullanabilirsiniz:

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

başka bir sorun varsa sana yardım etmek istiyorum

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.