我更改了查询数据库的方式,尽管结果很好,但我无法获取信息以显示在模板中。
我尝试以一种更简单的方式重写代码以尝试捕获错误,但没有发现任何错误。我不知道该怎么办。
from flask import render_template
from app import app, db
@app.route("/page")
def page():
'''
this is the old way that is useable in the template
result = Test.query.filter_by(id=12))
'''
# test variables
d = 65465
s = 'rebrb'
result = db.engine.execute('SELECT * FROM test WHERE id IN (183, 184, 180, 181, 182, 185, 95, 179)')
# new way works here but not in the template
print(result)
for row in result:
print(row.content)
return render_template('page.html', s=s, d=d, result=result, title='Video')
'''
The d and s load but the for loop doesn't do anything
'''
{{ d }}
{{ s }}
{% for row in result %}
{{ row }}
{{ d }}
{% endfor %}
显示d和s变量,但是for循环不起作用。
编辑1:在将结果转换为列表之前,我已经取得了一些进展,然后再将其发送到模板,但是我觉得我不必这样做,我仍在寻找一个更好的选择。
编辑2:我发现我也可以通过这种方式进行查询。
result = Test.query.filter(Test.id.in_(183, 184, 180, 181, 182, 185, 95, 179))
哪个效果更好,但我需要结果与列表的顺序相同
答案 0 :(得分:0)
我尝试更改为的查询可以通过使用
来完成result = Test.query.filter(Test.id.in_(95, 179, 180, 181, 182, 183, 184, 185))
没有任何其他问题。