Как перебрать список словарей в шаблоне Jinja?
Я старался:
list1 = [{"username": "abhi", "pass": 2087}]
return render_template("file_output.html", list1=list1)
В шаблоне:
<table border=2>
<tr>
<td>
Key
</td>
<td>
Value
</td>
</tr>
{% for dictionary in list1 %}
{% for key in dictionary %}
<tr>
<td>
<h3>{{ key }}</h3>
</td>
<td>
<h3>{{ dictionary[key] }}</h3>
</td>
</tr>
{% endfor %}
{% endfor %}
</table>
Приведенный выше код разбивает каждый элемент на несколько символов:
[
{
"
u
s
e
r
...
Я протестировал вышеупомянутый вложенный цикл в простом скрипте Python, и он отлично работает, но не в шаблоне Jinja.
Ответы
Ответ 1
Данные:
parent_dict = [{'A':'val1','B':'val2'},{'C':'val3','D':'val4'}]
в итерации Jinja2:
{% for dict_item in parent_dict %}
{% for key, value in dict_item.items() %}
<h1>Key: {{key}}</h1>
<h2>Value: {{value}}</h2>
{% endfor %}
{% endfor %}
Примечание:
убедитесь, что у вас есть список элементов dict. Если вы получите UnicodeError
, может быть значение внутри dict содержит формат unicode. Эта проблема может быть решена в views.py
если dict является объектом unicode
, вам нужно закодировать в utf-8
Ответ 2
Как Sidenote в @Navaneethan ответа, Jinja2
умеет делать "обычный" Пункт выбор для списка и словаря, учитывая мы знаем ключ словаря, или расположение элементов в списке.
Данные:
parent_dict = [{'A':'val1','B':'val2', 'content': [["1.1", "2.2"]]},{'A':'val3','B':'val4', 'content': [["3.3", "4.4"]]}]
в итерации 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 %}
Выводимый вывод:
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.
Ответ 3
{% for i in yourlist %}
{% for k,v in i.items() %}
{# do what you want here #}
{% endfor %}
{% endfor %}
Ответ 4
Если мой список массивов словарей подобен этому - [{'D': Нет}, {'D': '>'}, {'D': '<'}, {'D': Нет}, {'D ':'> '}, {' D ':' <'}, {' D ': нет}, {' D ':'> '}, {' D ':' <'}, {' D ': Нет}, {'D': '>'}, {'D': Нет}, {'D': '>'}, {'D': Нет}, {'D': '>'}, { 'D': '<'}, {'D': '<'}, {'D': '<'}, {'D': нет}, {'D': '>'}, {'D ': None}, {' D ':'> '}, {' D ':' <'}, {' D ': None}, {' D ':'> '}, {' D ': None}, {'D': '>'}, {'D': '<'}, {'D': '<'}, {'D': нет}, {'D': '>'}, { 'D': Нет}, {'D': '>'}, {'D': '<'}, {'D': Нет}, {'D': '>'}]
Каким должен быть код дзиндзя, чтобы отобразить это в табличной форме?