【问题标题】:variable 'product_id' referenced before assignment分配前引用的变量“product_id”
【发布时间】:2019-11-08 00:05:43
【问题描述】:

收藏我的项目的路线,收藏时不重复,并检查它是否是#favored,我也很难删除它

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)

【问题讨论】:

  • 我在代码 sn-p 中没有看到变量“product_id”。将错误的完整回溯显示为问题中格式正确的文本。

标签: python sql variables flask-sqlalchemy


【解决方案1】:

我假设id_produto 是您的问题标题中定义为product_id 的变量。

请问,您能否编辑您的问题,以确保您描述的错误与您共享的代码中定义的变量一致?

无论如何,假设id_produtoproduct_id,如果您检查代码中的下一行:

novo_favorito = Favoritos(produtos_id=id_produto, usuarios_id=id_cliente)

如您所见,您正在分配 productos_id=id_produto,但之前尚未声明 id_produto。所以,这就是你得到的错误。

【讨论】:

    【解决方案2】:

    我正在使用 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')
    

    【讨论】:

      猜你喜欢
      • 2020-07-08
      • 1970-01-01
      • 1970-01-01
      • 2017-08-10
      • 2020-01-16
      • 2019-12-05
      • 2017-09-19
      • 2020-09-26
      • 2022-01-02
      相关资源
      最近更新 更多