如何在Jinja2中打印包含字典的列表?已实现单字典打印
遍历多字典列表生成HTML(Jinja2模板)
很简单,你只需要在原来的循环外面再加一层列表遍历循环就搞定了!因为allAttendance是包含多个学生字典的列表,外层循环负责逐个取出每个学生的字典,内层循环就沿用你之前处理单个字典的逻辑渲染键值对就行。
这里给你两种实用的实现方式,按需选择:
方式一:完整遍历所有字段
这种方式会完整渲染每个学生的所有键值对,并用容器区分不同学生的记录:
{% for student in allAttendance %} <!-- 用div包裹单个学生的记录,方便后续加样式区分 --> <div class="student-record"> <h3>学生考勤记录</h3> <!-- 内层循环和你处理单个字典的逻辑完全一致 --> {% for key, value in student.items() %} <h4>{{ key }}</h4> <p>Value: {{ value }}</p> {% endfor %} </div> <!-- 加个分隔线,让不同学生的记录视觉上更清晰 --> <hr> {% endfor %}
方式二:突出学生ID(避免重复显示)
如果想把学生ID作为每个记录的标题,并且不重复显示ID字段,可以这样优化:
{% for student in allAttendance %} <div class="student-record"> <!-- 单独提取学生ID作为区块标题 --> <h3>学生ID: {{ student['Student ID'] }}</h3> {% for key, value in student.items() %} <!-- 跳过已经单独展示的Student ID字段 --> {% if key != 'Student ID' %} <h4>{{ key }}</h4> <p>Value: {{ value }}</p> {% endif %} {% endfor %} </div> <hr> {% endfor %}
小提醒:
我把标题标签从h1/h2调整为h3/h4,因为h1通常是整个页面的主标题,用层级更低的标题更符合HTML语义规范,你可以根据自己的页面结构灵活调整标签层级。外层的<div>和<hr>是为了提升视觉区分度,不需要的话直接删掉就行。
内容的提问来源于stack exchange,提问作者Han
相关产品推荐
相关产品推荐

