📅  最后修改于: 2023-12-03 15:02:08.083000             🧑  作者: Mango
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()
方法同时访问键和值,并将它们分别赋值给 name
和 info
变量。然后,我们可以使用 {{ }}
语法访问值的属性。
最后,我们在 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>