favoritar = request.form.getlist("produto")
print('produto', favoritar)
print('REQUEST FORM', request.form)
favorito = Favoritos.query.filter_by(usuarios_id=current_user.id).all()
for id_prod in favoritar:
if len(favorito) == 0: # verifica quantos favoritos está marcado no banco
id_cliente = current_user.id
novo_favorito = Favoritos(produtos_id=id_produto,usuarios_id=id_cliente)
print('p',id_produto)
print('c',id_cliente)
db.session.add(novo_favorito)
else:
for fav in favorito:
print('fav',fav)
if len(fav) == 1:
pass
print('primeiro',id_prod)
for id_produto in favorito:
print('segundo',id_produto.produtos_id)
if id_prod != id_produto.produtos_id:
id_cliente = current_user.id
novo_favorito = Favoritos(produtos_id=id_produto,usuarios_id=id_cliente)
print('p',id_produto)
print('c',id_cliente)
db.session.add(novo_favorito)
答案 0 :(得分:0)
我将假设id_produto
是问题标题中定义为product_id
的变量。
请,您可以编辑问题以确保使您描述的错误与共享代码中定义的变量一致吗?
无论如何,如果您检查代码中的下一行,则假设id_produto
是product_id
。
novo_favorito = Favoritos(produtos_id=id_produto, usuarios_id=id_cliente)
如您所见,您正在分配productos_id=id_produto
,但是id_produto
之前尚未声明。因此,这就是您得到的错误。
答案 1 :(得分:0)
我正在使用python,上面的代码来自我的发布路线,旨在处理购物时间表中的最爱。路由变量是我在代码中已经提到的所有变量。作为一名学生,我和老师一起提出了一种将书签保存到数据库的新方法,它下面是(抱歉,我是该领域的新手):
@app.route('/favoritar2', methods=['POST'])
def post_fav():
favoritar = request.form.getlist("produto")
try:
favorito = Favoritos.query.filter_by(usuarios_id=current_user.id).all()
print('Favoritar', favoritar)
print('REQUEST FORM', request.form)
print('Favorito',favorito)
for i in favoritar:
fav2 = int(favoritar[i])
print('FAV2',fav2)
print('I-FAVORITAR',i)
print('TYPE-FAVORITAR',type(i))
print('FAVORITAR',favoritar)
if i not in favorito:
print('TYPE-FAVORITO',type(i))
print('I-FAVORITO',i)
print('FAVORITO',favorito)
novo_favorito = Favoritos(produtos_id=i,usuarios_id=current_user.id)
print("novo favorito", novo_favorito)
db.session.add(novo_favorito)
novo_favorito = ""
else:
print("Esse ja existe ",i)
db.session.commit()
db.session.commit()
flash('Favoritado!','success')
print('ok')
except Exception as e:
flash('Erro'+str(e),'danger')
print('Erro '+str(e))
return redirect('/favoritar')