Jinja2遍历包含字典列表的字典模板错误



我有一个来自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 %}

最新更新