我有一个来自flask的Python对象,看起来像这样:
data = {
"sunday": [{"key":"value"}],
"monday" : [{"key":"value"}],
"tuesday": [{"key":"value"}],
"wednesday": [{"key":"value"}],
"thursday": [{"key":"value"}],
"friday": [{"key":"value"}],
"saturday": [{"key":"value"}]
}
在我的HTML文件中,我尝试了以下操作:
// #1
{% for key, value in data.items %}
{% for item in value %}
<p>{{item.key}}</p>
{% endfor %}
{% endfor %}
// #2
{% for key, value in data.items() %}
{% for item in value %}
<p>{{item.key}}</p>
{% endfor %}
{% endfor %}
// #3
{% for key, value in data.items %}
{% endfor %}
// #4
{% for key, value in data.items() %}
{% endfor %}
所有这些都返回相同的错误:
jinja2.exceptions.TemplateSyntaxError: Unexpected end of template. Jinja was looking for the following tags: 'endfor' or 'else'. The innermost block that needs to be closed is 'for'.
唯一有效的是:
{% for key in data %}
{% endfor %}
但这不会返回任何结果,我无法进一步迭代。如何迭代包含字典列表的字典并打印出值?
您缺少第三个循环:
data = {
"sunday": [{"key":"value"}],
"monday" : [{"key":"value"}],
"tuesday": [{"key":"value"}],
"wednesday": [{"key":"value"}],
"thursday": [{"key":"value"}],
"friday": [{"key":"value"}],
"saturday": [{"key":"value"}]
}
data
是一个字典,每个值都包含一个列表。直到你说对了。但在列表中,你有另一本字典,你也需要循环使用:
{% for key, val in data.items() %}
{% for entry in val %}
{# You could also access item 0 if you know for a #}
{# fact that the list always holds a single entry. #}
{% for entry_key, entry_val in entry.items() %}
<p>{{entry_key}}</p>
{% endfor %}
{% endfor %}
{% endfor %}