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

Jinja模板中按指定表头顺序在HTML渲染字典值问题

解决Jinja2中按指定键顺序渲染字典列表的问题

嘿,我懂你碰到的这个坑!你用{{ result.header }}的时候,Jinja2会把header当成字典里一个叫header的固定键来查找,但你实际想要的是用循环里的header变量作为键去取对应的值对吧?

修正方法

在Jinja2里,当你需要用变量作为字典的键来取值时,得用方括号索引的方式,而不是点语法。把你的代码改成这样就行:

{% for result in results %}
  <tr>
    {% for header in headers %}
      <td>{{ result[header] }}</td>
    {% endfor %}
  </tr>
{% endfor %}

为什么原来的代码不行?

Jinja2的点语法(比如result.first)有两个作用:

  • 访问对象的属性
  • 访问字典中固定名称的键(相当于result['first'])

但当你的键是一个变量(比如循环里的header),点语法就失效了,这时候必须用方括号result[header],它会把header的值当成键去查找字典里对应的内容。

完整示例(包含表头)

为了让你能直接复用,这里给个带表头的完整表格代码:

<table>
  <thead>
    <tr>
      {% for header in headers %}
        <th>{{ header|capitalize }}</th> <!-- 可以用过滤器把键名转成首字母大写的表头 -->
      {% endfor %}
    </tr>
  </thead>
  <tbody>
    {% for result in results %}
      <tr>
        {% for header in headers %}
          <td>{{ result[header] }}</td>
        {% endfor %}
      </tr>
    {% endfor %}
  </tbody>
</table>

这样就能完美按照headers列表指定的顺序,渲染每个字典里对应的值啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:44:19