Lo intenté:
list1 = [{"username": "abhi", "pass": 2087}] return render_template("file_output.html", list1=list1)
En la plantilla:
Key Value {% for dictionary in list1 %} {% for key in dictionary %} {{ key }}
{{ dictionary[key] }}
{% endfor %} {% endfor %}
El código anterior está dividiendo cada elemento en varios caracteres:
[ { " u s e r ...
Probé el bucle nested anterior en un script de Python simple y funciona bien, pero no en la plantilla de Jinja.
parent_dict = [{'A':'val1','B':'val2'},{'C':'val3','D':'val4'}]
{% for dict_item in parent_dict %} {% for key, value in dict_item.items() %} Key: {{key}}
Value: {{value}}
{% endfor %} {% endfor %}
asegúrese de tener la lista de elementos de dict. Si obtiene UnicodeError
, el valor dentro del dict contiene un formato de Unicode. Ese problema se puede resolver en su views.py
si el dict es un objeto unicode
, tiene que codificar en utf-8
Como referencia a 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.
parent_dict = [{'A':'val1','B':'val2', 'content': [["1.1", "2.2"]]},{'A':'val3','B':'val4', 'content': [["3.3", "4.4"]]}]
{% 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 %}
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 %}