将Python字典转换为HTML表格

29 投票
7 回答
92969 浏览
提问于 2025-04-17 14:27

有没有办法把Python字典打印成HTML表格呢?我有一个Python字典,正通过以下方式发送到HTML:

return render_template('index.html',result=result)

现在我需要把结果字典里的元素以表格的形式打印到HTML中。

7 个回答

6

我发现把字典放进一个列表的列表里效果更好,然后让HTML循环这个列表来打印表格。

对应的Python代码是:

Table = []
for key, value in results_dict.iteritems():    # or .items() in Python 3
    temp = []
    temp.extend([key,value])  #Note that this will change depending on the structure of your dictionary
    Table.append(temp)

然后在你的HTML中,你可以循环这个表格。

<table>
{% for t in table %}
    <tr>
    {% for i in t %}
        <td>{{ i }}</td>
    {% endfor %}
    </tr>
{% endfor %}
 </table>
7

可以看看这个链接:Flask-Table

下面是文档里的一个例子(稍微修改过):

from flask_table import Table, Col

# Declare your table
class ItemTable(Table):
    name = Col('Name')
    description = Col('Description')

items = [dict(name='Name1', description='Description1'),
         dict(name='Name2', description='Description2'),
         dict(name='Name3', description='Description3')]

# Populate the table
table = ItemTable(items)

# Print the html
print(table.__html__())
# or just {{ table }} from within a Jinja template
53

Flask使用Jinja作为模板框架。你可以在你的模板(html文件)中这样做:

Jinja也可以单独使用,作为一种标记渲染工具。

Python3 / Jinja2

<table>
  <thead>
    <tr>
      <th>Key</th>
      <th>Value</th>
    </tr>
  </thead>
  <tbody>
  {% for key, value in result.items() %}
   <tr>
       <td> {{ key }} </td>
       <td> {{ value }} </td>
   </tr>
  {% endfor %}
  </tbody>
</table>

Python2 / Jinja

<table>
{% for key, value in result.iteritems() %}
   <tr>
        <th> {{ key }} </th>
        <td> {{ value }} </td>
   </tr>
{% endfor %}
</table>

撰写回答