对于Jinja2 / python中的循环不起作用(使用sqlite3)

时间:2018-05-02 15:36:10

标签: python sqlite flask jinja2

我在jinja中有以下for循环:

<table>
   <thead>
       <td>Stock</td>
       <td>Shares</td>
       <td>Total</td>
   </thead>
   <tbody>
       {% for dict in rows2 %}
       <tr>
           {% for key, value in dict.items() %}
           <td> {{value}} </td>
           {% endfor %}
       </tr>
       {% endfor %}
   </tbody>
</table>

从我的烧瓶应用程序获取数据,特别是从以下行:

rows2 = db.execute("SELECT stock, amount, total_value FROM portfolio WHERE id = :id", id = session.get("user_id"))

现在,如果我将rows2打印到控制台,我实际上得到了我想要的东西,就像这样:

[{'stock': 'AAPL', 'amount': 1, 'total_value': 676.4}, {'stock': 'BB', 'amount': 1, 'total_value': 10.53}, {'stock': 'IBM', 'amount': 1, 'total_value': 144.99}]

但网页中的表格仅显示标题部分,实际数据部分留空!为什么会这样?

干杯!

2 个答案:

答案 0 :(得分:1)

根据您的评论,我认为罪魁祸首在于您致电render_template()。您不仅需要传递模板名称,还需要模板中使用的变量See here for the flask-docs

所以你应该真的在做

return render_template("portfolio.html", rows2=rows2)

...左侧是模板中的名称,右侧是您在逻辑中指定的变量。

答案 1 :(得分:0)

在items()之后省略():

{% for key, value in dict.items %}
....
{% endif %}