[英]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.