template safe plantillas linebreaksbr length ifequal python django django-templates

python - safe - linebreaksbr django



¿Elemento de la lista de referencias por índice dentro de la plantilla de Django? (4)

Esto puede ser simple, pero miré a mi alrededor y no pude encontrar una respuesta. ¿Cuál es la mejor manera de hacer referencia a un solo elemento en una lista de una plantilla de Django?

En otras palabras, ¿cómo hago el equivalente de {{ data[0] }} dentro del lenguaje de plantilla?

Gracias.


@ jennifer06262016, definitivamente puede agregar otro filtro para devolver los objetos dentro de un django Queryset.

@register.filter def get_item(Queryset): return Queryset.your_item_key

En ese caso, escribiría algo como esto {{Queryset | index: x | get_item}} en su plantilla para acceder a algún objeto del diccionario. Esto funciona para mi.



Una mejor manera: filtro de plantilla personalizada: https://docs.djangoproject.com/en/dev/howto/custom-template-tags/

como obtener List [x] en plantillas:

en plantilla

{% load index %} {{ List|index:x }}

templatetags / index.py

from django import template register = template.Library() @register.filter def index(List, i): return List[int(i)]

si List = [[''a'',''b'',''c''], [''d'',''e'',''f'']] , puede usar {{ List|index:x|index:y }} en plantilla para obtener la List[x][y]

Funciona bien con "para"

{{ List|index:forloop.counter0 }}

Probado y funciona bien ^ _ ^


{{ data.0 }} debería funcionar.

Digamos que usted escribió data.obj django try data.obj y data.obj() . Si no funcionan, intenta data["obj"] . En su caso, los data[0] se pueden escribir como {{ data.0 }} . Pero le recomiendo que extraiga los data[0] en la vista y los envíe como una variable separada.