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.