194 votes

Comment accéder aux éléments d'un tableau dans un modèle Django ?

J'obtiens un tableau arr transmis à mon modèle Django. Je veux accéder à des éléments individuels du tableau dans le tableau (par ex. arr[0] , arr[1] ) etc. au lieu de parcourir en boucle l'ensemble du tableau.

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

6 votes

Vous pouvez accéder à l'élément comme ceci arr.0 , arr.1 , ... Une autre solution : écrire votre propre balise de modèle arr|array_item: "0" ou quelque chose comme ça.

1 votes

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

0 votes

@rphonika array_item non trouvé et invalide.

330voto

Ned Batchelder Points 128913

Rappelez-vous que la notation par points dans un modèle Django est la suivante utilisé pour quatre notations différentes en Python . Dans un modèle, foo.bar peut signifier n'importe lequel des éléments suivants :

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 donnera l'index de votre liste car votre objet n'est pas un dict avec 3 comme clé, n'a pas d'attribut nommé 3, et n'a pas de méthode nommée 3.

5 votes

Le premier et le dernier ne sont-ils pas plus comme foo['bar'] ?

4 votes

Il semble qu'il n'y ait aucun moyen d'accéder à un élément de liste en utilisant un index variable :(

1 votes

Je suis d'accord avec @VickyChijwani : la quatrième option ci-dessus n'est pas valide. Les modèles Django ne semblent pas faire de recherche d'index de liste avec des variables.

184voto

Ofri Raviv Points 10600
arr.0
arr.1

etc.

18 votes

Comment imprimer la dynamique comme ex : arr.variablename

1 votes

Existe-t-il un moyen de faire cela sans chiffres magiques ? En d'autres termes, de "nommer" les .0 .1 .2 etc... ? Comme array["prénom"], array["nom de famille"] etc...

0 votes

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

33voto

ema Points 606

Vous pouvez accéder aux éléments de la séquence avec arr.0 , arr.1 et ainsi de suite. Voir Le chapitre sur le système de gabarits de Django du livre django pour plus d'informations.

6 votes

Le lien est mort

13voto

Omid reza Points 262

Quand vous render une demande de context des informations, par exemple :

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

Vous pouvez y accéder sur le modèle, pour variables

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

pour arrays

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

vous pouvez également nommer les objets de type tableau dans views.py puis l'utiliser comme indiqué ci-dessous :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X