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.