📜  jinja2 迭代字典 - Html (1)

📅  最后修改于: 2023-12-03 15:02:08.083000             🧑  作者: Mango

Jinja2 迭代字典 - HTML

Jinja2 是一个灵活的模板引擎,它能够有效地将数据和模板结合生成HTML、XML或其他格式的输出。它支持许多高级功能,如继承、过滤器、宏、variable scoping 等。

在本文中,我们将重点介绍 Jinja2 如何迭代字典以生成 HTML 输出。

迭代字典

假设我们有以下字典:

customers = {
    "Alice": {"email": "alice@example.com", "phone": "123-456-7890"},
    "Bob": {"email": "bob@example.com", "phone": "456-789-0123"},
    "Charlie": {"email": "charlie@example.com", "phone": "789-012-3456"}
}

现在我们想将这个字典渲染成一个 HTML 表格。我们可以使用以下 Jinja2 模板:

<table>
  <thead>
    <tr>
      <th>Name</th>
      <th>Email</th>
      <th>Phone</th>
    </tr>
  </thead>
  <tbody>
    {% for name, info in customers.items() %}
    <tr>
      <td>{{ name }}</td>
      <td>{{ info["email"] }}</td>
      <td>{{ info["phone"] }}</td>
    </tr>
    {% endfor %}
  </tbody>
</table>

在这个例子中,我们使用 for 循环迭代字典 customers 中的每一个键值对。在迭代过程中,我们可以使用 items() 方法同时访问键和值,并将它们分别赋值给 nameinfo 变量。然后,我们可以使用 {{ }} 语法访问值的属性。

最后,我们在 HTML 表格中输出每个用户的姓名、电子邮件和电话号码。

总结

在本文中,我们介绍了 Jinja2 如何迭代字典以生成 HTML 输出。这种技术可以用于许多其他的场景,例如生成 JSON 等格式的输出。

如果想深入了解 Jinja2 的高级特性,请查看官方文档。

代码片段:

``` python
customers = {
    "Alice": {"email": "alice@example.com", "phone": "123-456-7890"},
    "Bob": {"email": "bob@example.com", "phone": "456-789-0123"},
    "Charlie": {"email": "charlie@example.com", "phone": "789-012-3456"}
}
<table>
  <thead>
    <tr>
      <th>Name</th>
      <th>Email</th>
      <th>Phone</th>
    </tr>
  </thead>
  <tbody>
    {% for name, info in customers.items() %}
    <tr>
      <td>{{ name }}</td>
      <td>{{ info["email"] }}</td>
      <td>{{ info["phone"] }}</td>
    </tr>
    {% endfor %}
  </tbody>
</table>