我是 Flask 和 Python 的新手,所以提前道歉。我正在使用 Flask-SQLAlchemy 返回一个数据库行,这一切都很好:
customer = Customers.query.filter_by(cat_id = page).first()
return render_template('test.html',
customer = customer
)
我的问题是我试图弄清楚如何使用循环在我的 jinja 模板中显示该行的列值。这是解决这个问题的最佳方法吗?我得到了“对象不可迭代”的错误,我有点理解,但我不确定如何解决它。
在我目前使用的模板中:
{{customer.id}}
{{customer.name}}
{{customer.area}}
etc.
但我想做这样的事情:
{% for item in customer %}
{{item[column]}}
{% endfor %}
可以将查询转换为字典吗?
我已经搜索了所有试图弄清楚这一点但没有运气,这让我认为我可能走错了路。
非常感谢任何建议。
更新:
我认为这是进步。主要的变化是在views.py 中,我添加
.__dict__
了从我读到的访问__dict__
SQLAlchemy 对象内部的内容。for 模板循环现在输出列值,但它也输出许多其他不需要的东西。反正有清理这个吗?
模型.py
class Customers(db.Model):
id = db.Column(db.Integer, primary_key = True)
cust_name = db.Column(db.String(64))
cust_area = db.Column(db.String(64))
cat_id = db.Column(db.Integer(8), index = True)
视图.py
customer = Customers.query.filter_by(cat_id = page).first()
return render_template('test.html',
customer = customer.__dict__
)
测试.html
{% for key, value in customer.items() %}
{{ key }} , {{ value }}
{% endfor %}
输出
cust_name , John _sa_instance_state ,
<sqlalchemy.orm.state.InstanceState object at 0x03961D50> id , 1 cat_id , 2 cust_area , England