我的模板是这样的:
{% for order in orders %}
<li><h2>{{ order}}</h2>
{% endfor %}
我的路由功能是这样的:
@app.route('/order_history')
def orderhistory():
db = get_db()
cur = db.execute('select * from order_items')
orders = cur.fetchall()
return render_template('order_history.html', orders = orders)
知道为什么我要获取行对象位置而不是数据库内容吗?
最佳答案
您需要从行中获取数据:
{% for order in orders %}
<li><h2>{{ order[0] }}</h2></li>
{% endfor %}
SQL 查询总是按行返回数据,其中包含列。以上假设您的
SELECT
每行仅返回一列。如果您有多个列,则必须使用直接索引(
order[1]
、 order[3]
等)来解决这些问题,或者在行上循环以显示列:{% for order in orders %}
<li><h2>{{ order[0] }}</h2>
{% for column in order %}
{% if not loop.first %}{{ column }}<br />{% endif %}
{% endfor %}
</li>
{% endfor %}
关于python - <sqlite3.Row 对象在 0x1017fe3f0> 而不是数据库内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23857386/