python - AttributeError:'list'对象没有属性'product_img' Python,Flask,SQLite
问题描述
我正在尝试在 SQLite 数据库的模板上显示文本和图像。数据库模型:
class NewProduct(db.Model):
id = db.Column(db.Integer, primary_key=True)
product_name = db.Column(db.String(100), nullable=False)
product_description = db.Column(db.String(200), nullable=False)
product_date = db.Column(db.DateTime, default=datetime.utcnow)
product_img = db.Column(db.BLOB())
def __repr__(self):
return '<NewProduct %r>' % self.id
在 .html 中显示来自 db 的信息的函数:
@app.route('/products')
def products():
products = NewProduct.query.order_by(NewProduct.product_date.desc()).all()
product_img = b64encode(products.product_img).decode('utf-8')
return render_template('products.html', products=products, image=product_img)
HTML:
<body>
{% if products|length > 0 %}
{% for el in products %}
<p>Name: {{ el.product_name }}</p>
<p>Description: {{ el.product_description }}</p>
<p>Image: </p> <img src="data:;base64,{{ image }}">
<p>Date: {{ el.product_date }}</p>
{% endfor %}
{% else %}
<p>There are have no products</p>
{% endif %}
所以,我得到一个错误:AttributeError: 'list' object has no attribute 'product_img'
在线product_img = b64encode(products.product_img).decode('utf-8')
我这样做是为了这个答案。但我无论如何都会得到这个错误。我在做什么,我该如何解决?
解决方案
products
是一个列表,因此该行 products.product_img
会引发您面临的错误。如果您需要将图像转换为其他内容,则需要遍历products
并修改每个产品的图像。
推荐阅读
- json - 如何正确地将新密钥传递给 JSON 字典?
- matlab - 将面顶点网格导出到 STL
- javascript - 我想在我的代码中多次调用一个函数?
- javascript - 使用 Passport.js 和 Sequelize 引用多个模型
- python - Amazon S3 boto3 如何遍历存储桶中的对象?
- java - 模拟 File.createTempFile() 并返回我们模拟的 File 对象
- java - TextView.setView() 不更新文本
- mapbox - Mapbox - 从自动完成结果中获取区域
- javascript - 带有 ? 选项的 json 文件 404
- linq - Linq 条件 .ANY() 问题