我正在使用Flask-Bcrypt,Python和SQLAlchemy创建登录名。我能够成功注册新的管理员,并且它创建的哈希值很好。但是,当我尝试登录管理员并为该管理员创建新会话时,出现此错误; TypeError:“管理员”对象不可下标。我不知道如何解决这个问题,已经花了整整一天的时间。
此外,在使用SQLAlchemy之前,我从未做过此事。我只使用MySQL完成此操作。因此,我觉得我可能使用了错误的语法或其他无法使用的语法。
错误来自hashed_password = admin[0]['password']
这是代码,我也包括了模型。
class Admin(db.Model):
__tablename__="admins"
id = db.Column(db.Integer, primary_key=True)
first_name = db.Column(db.String(255))
last_name = db.Column(db.String(255))
username = db.Column(db.String(255))
password = db.Column(db.String(255))
created_at = db.Column(db.DateTime, server_default=func.now())
updated_at = db.Column(db.DateTime, server_default=func.now(), onupdate=func.now())
admin = Admin.query.filter_by(username=request.form['username']).all()
if admin:
hashed_password = admin[0]['password']
if bcrypt.check_password_hash(hashed_password, request.form['password']):
session['admin_id'] = admin.id
return redirect ("/admin_home")