[英]Flask and HTML, from python dictionary to HTML table iteratively
我有一個形式的python字典
data = {
'category1': {
'titles': ['t1', 't2', 't3'],
'dates': ['d1', 'd2', 'd3']
},
'category2': {
'titles': ['t4', 't5', 't6'],
'dates': ['d4', 'd5', 'd6']
}
}
我想創建一個如下所示的html表:
category1 category2
t1 t4
d1 d4
--------------------------
t2 t5
d2 d5
--------------------------
t3 t6
d3 d6
--------------------------
我正在使用flask,我的flask / python代碼是:
from flask import Flask, render_template
import pickle
app = Flask(__name__)
@app.route('/')
def hello_world():
data=pickle.load(open('results.p','rb'))
return render_template('index.html', x=data)
if __name__ == "__main__":
app.run()
我的HTML模板是:
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Webpage</title>
</head>
<body>
<table>
{% for r,s in x.iteritems() %}
<tr>
<td>{{ r['titles'] }}{{r['dates']}}</td>
<td>{{ s['titles'] }} {{s['dates']}}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
但是,運行此程序時出現內部服務器錯誤。
我也很疲倦,沒有任何喜悅的data.iteritems()
。
我在這里也遵循了公認的答案:將Python字典放入html table ,但是出現了同樣的錯誤。
newdata = zip(
zip(*(x['titles'] for x in data.values())),
zip(*(x['dates'] for x in data.values())))
print(list(data.keys()))
for group in newdata:
for row in group:
print(row)
print('-----')
給您以下輸出:
['category1', 'category2']
('t1', 't4')
('d1', 'd4')
-----
('t2', 't5')
('d2', 'd5')
-----
('t3', 't6')
('d3', 'd6')
-----
如您所見,項目現在已正確配對到newdata
。 因此,現在您可以更好地對其進行迭代,並生成表輸出。
模板代碼如下所示:
<table>
{% for group in x %}
{% for row in group %}
<tr>
<td>{{ row[0] }}</td>
<td>{{ row[1] }}</td>
</tr>
{% endfor %}
{% endfor %}
</table>
看一下,希望對您有用:D
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Webpage</title>
</head>
<body>
<table>
{% for r in x.values() %}
<tr>
<td>{{ r['titles'] }}{{ r['dates'] }}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.