2009-11-09 6 views
132

Je reçois un tableau arr passé à mon modèle Django. Je veux accéder à des éléments individuels du tableau dans le tableau, par exemple. arr[0], arr[1] etc au lieu de boucler à travers le tableau entier.Comment accéder aux éléments de tableau dans un modèle Django?

Existe-t-il un moyen de le faire dans un modèle Django?

Merci.

+1

Vous pouvez accéder à l'article comme celui-ci 'arr .0', 'arr.1', ... Une autre solution: écrivez votre propre balise template' arr | array_item: "0" 'ou quelque chose comme ça. – rphonika

+1

@rphonika Oui, exemple ici: http://stackoverflow.com/a/29664945/2714931 – WeizhongTu

Répondre

116
arr.0 
arr.1 

etc.

+6

comment imprimer dynamique comme ex: arr.variablename – karnaf

+0

Y at-il un moyen de le faire sans chiffres magiques? En d'autres termes pour "nommer" le .0 .1 .2 etc ...? Comme array ["prénom"], tableau ["nom"] etc .. – cyberjoac

+0

@cyberjoac dans ce cas, utilisez un dict. Dans la vue: d = {'first_name': 'foo', 'last_name': 'bar'}. Dans le modèle {{d.firstname}} fonctionnera très bien. –

267

Rappelez-vous que la notation de points dans un modèle Django est utilisé pour quatre notations différentes en Python. Dans un modèle, foo.bar peut signifier tout de:

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

Il les essaie dans cet ordre jusqu'à ce qu'il trouve une correspondance. Donc foo.3 vous obtiendrez votre index de liste parce que votre objet n'est pas un dict avec 3 comme une clé, n'a pas un attribut nommé 3, et n'a pas une méthode nommée 3.

+1

** + 1 ** Bravo, c'était immensément utile. –

+2

Ne sont pas le premier et le dernier plus like'foo ['bar'] '? –

+2

Il semble y avoir aucun moyen d'accéder à un élément de liste en utilisant un index de variable :( –

2

lorsque vous render une demande coctext quelques informations tou: pour exampel:

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

vous pouvez accéder à ce modèle sur comme ceci: for variabels :

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

for array :

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

vous pouvez également nommer les objets du tableau dans views.py et dix utiliser comme:

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

s'il y a un autre problème que je veux vous aider

Questions connexes