我试过了:
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模板中没有。
答案 0 :(得分:97)
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
答案 1 :(得分:15)
作为@Navaneethan回答的旁注,Jinja2
能够做到#34;常规&#34;鉴于我们知道字典的关键字或列表中项目的位置,列表和字典的项目选择。
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.
答案 2 :(得分:6)
{% for i in yourlist %}
{% for k,v in i.items() %}
{# do what you want here #}
{% endfor %}
{% endfor %}
答案 3 :(得分:0)
只是类似问题的旁注(如果我们不想循环通过):
如何在Jinja模板中使用可变键查找字典?
这里是一个例子:
{% set key = target_db.Schema.upper()+"__"+target_db.TableName.upper() %}
{{ dict_containing_df.get(key).to_html() | safe }}
这很明显。但是我们不需要花括号内的花括号。直接的python语法有效。 (我发帖是因为我对我感到困惑...)
或者,您可以简单地做
{{dict[target_db.Schema.upper()+"__"+target_db.TableName.upper()]).to_html() | safe }}
但是如果找不到密钥,它将吐出一个错误。因此最好在Jinja中使用get
。
答案 4 :(得分:0)
**get id from dic value. I got the result.try the below code**
get_abstracts = s.get_abstracts(session_id)
sessions = get_abstracts['sessions']
abs = {}
for a in get_abstracts['abstracts']:
a_session_id = a['session_id']
abs.setdefault(a_session_id,[]).append(a)
authors = {}
# print('authors')
# print(get_abstracts['authors'])
for au in get_abstracts['authors']:
# print(au)
au_abs_id = au['abs_id']
authors.setdefault(au_abs_id,[]).append(au)
**In jinja template**
{% for s in sessions %}
<h4><u>Session : {{ s.session_title}} - Hall : {{ s.session_hall}}</u></h4>
{% for a in abs[s.session_id] %}
<hr>
<p><b>Chief Author :</b> Dr. {{ a.full_name }}</p>
{% for au in authors[a.abs_id] %}
<p><b> {{ au.role }} :</b> Dr.{{ au.full_name }}</p>
{% endfor %}
{% endfor %}
{% endfor %}