python - example - jinja2
lista de diccionario en plantilla jinja (3)
Datos:
parent_dict = [{''A'':''val1'',''B'':''val2''},{''C'':''val3'',''D'':''val4''}]
en la iteración de Jinja2:
{% for dict_item in parent_dict %}
{% for key, value in dict_item.items() %}
<h1>Key: {{key}}</h1>
<h2>Value: {{value}}</h2>
{% endfor %}
{% endfor %}
Nota:
asegúrese de tener la lista de elementos dict.Si obtiene UnicodeError
puede ser el valor dentro del dict contiene formato Unicode. Ese problema se puede resolver en tu views.py
si el dict es unicode
object, tienes que codificar en utf-8
¿Cómo iterar a través de la lista de diccionarios en la plantilla de jinja?
list1=[{"username": "abhi","pass": 2087}]
return render_template("file_output.html",lis=list1)
en la plantilla
<table border=2>
<tr>
<td>
Key
</td>
<td>
Value
</td>
</tr>
{% for lis1 in lis %}
{% for key in lis1 %}
<tr>
<td>
<h3>{{key}}</h3>
</td>
<td>
<h3>{{lis1[key]}}</h3>
</td>
</tr>
{% endfor %}
{% endfor %}
</table>
El código anterior está dividiendo cada elemento en múltiples
Valor clave [
{
"
tu
s
e ...
Probé el bucle anidado anterior en un script de Python simple y funciona bien, pero no en la plantilla de jinja.
Como nota al margen de la respuesta de @Navaneethan, Jinja2
puede hacer selecciones de elementos "regulares" para la lista y el diccionario, dado que conocemos la clave del diccionario o la ubicación de los elementos en la lista.
Datos:
parent_dict = [{''A'':''val1'',''B'':''val2'', ''content'': [["1.1", "2.2"]]},{''A'':''val3'',''B'':''val4'', ''content'': [["3.3", "4.4"]]}]
en la iteración de Jinja2:
{% for dict_item in parent_dict %}
This example has {{dict_item[''A'']}} and {{dict_item[''B'']}}:
with the content --
{% for item in dict_item[''content''] %}{{item[0]}} and {{item[1]}}{% endfor %}.
{% endfor %}
La salida representada:
This example has val1 and val2:
with the content --
1.1 and 2.2.
This example has val3 and val4:
with the content --
3.3 and 4.4.
{% for i in yourlist %}
{% for k,v in i.items() %}
{# do what you want here #}
{% endfor %}
{% endfor %}