You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask中Jinja2遍历嵌套结构触发模板语法报错的解决方法

嵌套字典列表的正确遍历方案

针对你给出的data结构,可直接使用以下写法完成嵌套遍历,输出内层字典的值:

兼容写法(推荐优先使用)

使用Jinja内置的items过滤器遍历字典键值对,规避不同版本的语法兼容问题:

{% for week_name, item_list in data|items %}
  {# 外层遍历拿到星期名称与对应的字典列表 #}
  <h4>{{ week_name }}</h4>
  {# 内层遍历拿到列表中的单个字典 #}
  {% for day_item in item_list %}
    <p>{{ day_item.key }}</p>
  {% endfor %}
{% endfor %}

原生属性写法

如果当前环境支持直接访问字典方法,也可以使用以下写法:

{% for week_name, item_list in data.items %}
  <h4>{{ week_name }}</h4>
  {% for day_item in item_list %}
    <p>{{ day_item.key }}</p>
  {% endfor %}
{% endfor %}

注意:Jinja2中访问方法不需要额外加括号,禁止写data.items(),老版本Jinja会直接解析报错。


报错原因排查

你遇到的Unexpected end of template报错,可按以下优先级排查:

  • 检查for标签内的变量分隔逗号是否为英文半角逗号:误写为中文逗号会导致Jinja解析for参数失败,抛出无明确指向的endfor找不到错误。
  • 检查所有模板标签的闭合格式:确保所有{%与%}一一对应,避免漏写大括号、百分号导致标签无法识别,比如把{% endfor %}误写为{% endfor }。
  • 确认没有多余的括号:所有调用方法的位置不要加(),尤其是items的写法。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.23 20:15:03