繁体   English   中英

烧瓶和HTML,从python字典到HTML表格进行迭代

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM