属性错误:';列表';对象没有属性';产品img和x27;Python、烧瓶、SQLite
我试图在SQLite数据库的模板上显示文本和图像。 数据库模型:属性错误:';列表';对象没有属性';产品img和x27;Python、烧瓶、SQLite,python,html,sqlite,flask,Python,Html,Sqlite,Flask,我试图在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
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:
{如果乘积|长度>0%}
{产品中el的百分比%}
名称:{el.product_Name}
描述:{el.product_Description}
图片:
日期:{el.product_Date}
{%endfor%}
{%else%}
没有产品
{%endif%}
因此,我得到一个错误:AttributeError:'list'对象在product\u img=b64encode(products.product\u img).decode('utf-8')行中没有属性'product\u img'
我这样做是为了这个。但我还是犯了这个错误。我正在做什么?我如何修复它?产品
是一个列表,因此行产品。产品\u img
会引发您面临的错误。如果您需要将图像转换为其他内容,则需要在产品上循环并修改每个产品的图像。您尝试访问产品的
列表,而不是在单个对象上。您需要迭代对象并更新每个对象的值:
@app.route('/products')
def products():
products = NewProduct.query.order_by(NewProduct.product_date.desc()).all()
for product in products:
product.product_img = b64encode(product.product_img).decode('utf-8')
return render_template('products.html', products=products)
然后更新模板以从产品
对象获取值:
<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,{{ el.product_img }}">
<p>Date: {{ el.product_date }}</p>
{% endfor %}
{% else %}
<p>There are have no products</p>
{% endif %}
{如果乘积|长度>0%}
{产品中el的百分比%}
名称:{el.product_Name}
描述:{el.product_Description}
图片:
日期:{el.product_Date}
{%endfor%}
{%else%}
没有产品
{%endif%}
我还建议从变量中删除前缀product
,因为它似乎是多余的,并且会降低代码的可读性
@app.route('/products')
def products():
products = NewProduct.query.order_by(NewProduct.product_date.desc()).all()
for product in products:
product.product_img = b64encode(product.product_img).decode('utf-8')
return render_template('products.html', products=products)
<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,{{ el.product_img }}">
<p>Date: {{ el.product_date }}</p>
{% endfor %}
{% else %}
<p>There are have no products</p>
{% endif %}