将Python字典转换为HTML表格
有没有办法把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>