【问题标题】:unboundlocalError:local variable 'session' refernced before assignment . "session.add(newItem)"unboundlocalError: 分配前引用的局部变量“会话”。 “session.add(新项目)”
【发布时间】:2019-10-29 12:43:08
【问题描述】:
@app.route(
    '/cars/<int:car_shop_id>/menu/new/', methods=['GET', 'POST'])
def newCar(car_shop_id):
    if 'username' not in login_session:
        return redirect('/login')
        session = connect_to_database()

    if request.method == 'POST':
        newItem = Cars(name=request.form['name'],   
                    description=request.form['description'],
                    price=request.form['price'],
                    car_shop_id=car_shop_id)
        session.add(newItem)
        session.commit()
        flash("Car has been added")
        return redirect(url_for('Car_shopMenu', car_shop_id=car_shop_id))
    else:
        return render_template('newcars.html', car_shop_id=car_shop_id)

【问题讨论】:

  • 不会执行同一块中return 以下的任何代码。
  • 您对session 的定义是第一个if 块的一部分。将其降低到函数体的级别。
  • @MisterMiyagi 我认为它在定义会话时有效,如果范围但我出现一个新错误:AttributeError: 'sqlite3.Connection' object has no attribute 'add'
  • @YosefHamdy 好吧,sqlite3.Connection 没有 add 方法。是什么让您认为它确实有效?

标签: python flask


【解决方案1】:

似乎会话永远没有机会初始化。

def newCar(car_shop_id): 如果“用户名”不在 login_session 中: 返回重定向('/login') session = connect_to_database()

【讨论】:

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