variable - Obtiene el elemento de la lista dinámicamente en plantillas django




templates django settings (3)

¿Estás seguro de que no puedes hacer lo siguiente?

{% for item in mylist %}
    {{ item }}
{% endfor %}

Con el filtro de sectores, incluso puedes hacer algunas personalizaciones.

Tengo un ciclo en la página y necesito el elemento de la lista dependiendo del número del ciclo.

Cuando llamo:

{{ mylist.1 }}
{{ mylist.2 }}
{{ mylist.3 }}

todo funciona bien, pero lo que realmente necesito es algo así como:

{% for x in somenumber|MyCustomRangeTag %}
    {{ mylist.x }}
{% endfor %}

MyCustomRangeTag me da el range() Python range() funciona y ya tengo x como número. Entonces x es 1, 2, 3 etc. dependiendo del número de bucle. ¿Es esto posible y cómo?


Esto no es posible directamente porque Django cree que "x" es la clave para buscar en mylist , en lugar del valor de x. Entonces, cuando x = 5 , Django intenta buscar mylist["x"] lugar de mylist[5] .

Utilice el siguiente filtro como solución alternativa:

@register.filter
def lookup(d, key):
    return d[key]

y usarlo como

{{ mylist|lookup:x }}

Noté que @ e-satis lo mencionó, pero creo que la etiqueta de plantilla de división integrada merece algo de amor.

{{ item | slice:"2" }} #gets the third element of the list






django-templates