Come accedere agli elementi dell'array in un modello Django?


167

Ricevo un array arrpassato al mio modello Django. Voglio accedere ai singoli elementi dell'array nell'array (ad es arr[0]. arr[1]) Ecc. Invece di eseguire il ciclo dell'intero array.

C'è un modo per farlo in un modello Django?


4
Puoi accedere a elementi come questo arr.0, arr.1... Un'altra soluzione: scrivi il tuo tag modello arr|array_item: "0" o qualcosa del genere.
rphonika,

1
@rphonika Sì, esempio qui: stackoverflow.com/a/29664945/2714931
WeizhongTu

Risposte:


304

Ricorda che la notazione punto in un modello Django viene utilizzata per quattro diverse notazioni in Python. In un modello, foo.barpuò significare uno qualsiasi di:

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

Li prova in questo ordine fino a quando non trova una corrispondenza. Quindi foo.3otterrai l'indice della tua lista perché il tuo oggetto non è un dict con 3 come chiave, non ha un attributo chiamato 3 e non ha un metodo chiamato 3.


3
Il primo e l'ultimo non sono più simili foo['bar']?
Bob Stein,

2
Sembra che non ci sia modo di accedere a una voce di elenco utilizzando un indice variabile :(
Vicky Chijwani

Concordo con @VickyChijwani: la quarta opzione sopra non è valida. I template di Django non sembrano
cercare

@hiyume Come superarlo?
Csaba Toth,

Non capisco che non sono riuscito a trovarlo nella documentazione ufficiale. Potresti fornire una fonte per quel post? Sono anche sorpreso dal fatto che questa non sia una risposta accettata al momento.
Kaszanas,

149
arr.0
arr.1

eccetera.


11
come stampare dinamico come ex: arr.variablename
Nandha Kumar il

C'è un modo per farlo senza numeri magici? In altre parole per "nominare" lo .0 .1 .2 ecc ...? Come array ["nome"], array ["cognome"] ecc.
cyberjoac,

@cyberjoac in quel caso usa un dict. Nella vista: d = {'first_name': 'foo', 'last_name': 'bar'}. Nel modello {{d.first_name}} funzionerà perfettamente.
Ofri Raviv,


7

quando si renderrichiede una coctextcerta informazione: per esempio:

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

puoi accedervi su un modello come questo: for variabels :

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

for array :

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

puoi anche nominare oggetti array views.pye dieci usarli come:

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

se ci sono altri problemi, desidero aiutarti

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.