Python 辞書を HTML のテーブルに出力する方法はありますか。私はpython辞書を持っており、使用してHTMLに送信しています
return render_template('index.html',result=result)
ここで、結果ディクショナリの要素を HTML にテーブルとして出力する必要があります。
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 / ジンジャ
<table>
{% for key, value in result.iteritems() %}
<tr>
<th> {{ key }} </th>
<td> {{ value }} </td>
</tr>
{% endfor %}
</table>
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
python3 の場合、result.items の後に () はありません
<table>
{% for key, value in result.items %}
<tr>
<th> {{ key }} </th>
<td> {{ value }} </td>
</tr>
{% endfor %}
</table>
を使用してディクショナリ項目を反復処理してからresult.iteritems()
、キー/データをhtmlテーブルの行に書き込みます。
#!/usr/bin/env python3
tbl_fmt = '''
<table> {}
</table>'''
row_fmt = '''
<tr>
<td>{}</td>
<td>{}</td>
</tr>'''
def dict_to_html_table(in_dict):
return tbl_fmt.format(''.join(row_fmt.format(k, v) for k, v in in_dict.items()))
if __name__ == "__main__":
d = {key: value for value, key in enumerate("abcdefg")}
print(d)
print(dict_to_html_table(d))