2009-11-09 16 views
132

Me sale una matriz arr pasada a mi plantilla de Django. Quiero acceder a los elementos individuales de la matriz en la matriz, p. arr[0], arr[1] etc. en lugar de recorrer toda la matriz.¿Cómo acceder a los elementos de la matriz en una plantilla de Django?

¿Hay alguna manera de hacerlo en una plantilla de Django?

Gracias.

+1

Puede acceder artículo como éste 'arr .0', 'arr.1', ... Otra solución: escriba su propia etiqueta de plantilla' arr | array_item: "0" 'o algo así. – rphonika

+1

@rphonika Sí, ejemplo aquí: http://stackoverflow.com/a/29664945/2714931 – WeizhongTu

Respuesta

116
arr.0 
arr.1 

etc.

+6

cómo imprimir dinámico como ex: arr.nombrevariable – karnaf

+0

¿Hay alguna manera de hacer esto sin números mágicos? En otras palabras para "nombrar" el .0 .1 .2 etc ...? Tales como array ["first name"], array ["lastname"] etc. – cyberjoac

+0

@cyberjoac en ese caso use un dict. En la vista: d = {'first_name': 'foo', 'last_name': 'bar'}. En la plantilla {{d.first_name}} funcionará bien. –

267

Recuerde que la notación de puntos en una plantilla de Django se utiliza para cuatro anotaciones diferentes en Python. En una plantilla, foo.bar puede significar cualquiera de:

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

Se les trata en este orden hasta que se encuentre una coincidencia. Entonces foo.3 obtendrá su índice de lista porque su objeto no es un dict con 3 como clave, no tiene un atributo llamado 3, y no tiene un método llamado 3.

+1

** + 1 ** Saludos, esto fue inmensamente útil. –

+2

¿No es el primero y el último más parecido a 'foo ['bar'] '? –

+2

Parece que no hay forma de acceder a un elemento de la lista usando un índice de variable :( –

2

cuando render a request tou coctext alguna información: para exampel:

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

puedas acceso a la misma en la plantilla de esta manera: for variabels :

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

for array :

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

también se puede nombrar los objetos de matriz en views.py y diez usarlo como:

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

si hay otro problema que deseo para ayudarle a

Cuestiones relacionadas