我每次通过错误呼叫login_user时,我的应用程序都会失败“ NotImplementedError:无id
属性-覆盖get_id
”。为什么失败了?
@app.route('/login', methods=['GET', 'POST'])
def login():
if current_user.is_authenticated:
return redirect(url_for('home'))
form = LoginForm()
if form.validate_on_submit():
user = User.query.filter_by(email=form.email.data).first()
if user and bcrypt.check_password_hash(user.password, form.password.data):
login_user(user, remember=True)
else:
flash('Login Unsuccessful. Please check email and password', 'danger')
return redirect(url_for('login'))
return render_template('login.html', title='login', form=form)
@login_manager.user_loader
def load_user(userid):
return User.query.get(userid)
class User(UserMixin):
def get_id(self):
return self.userid
class User(UserMixin, db.Model):
userid = db.Column(db.String(50), primary_key=True)
name = db.Column(db.String(200), nullable=False)
username = db.Column(db.String(200), unique=True, nullable=False)
designation = db.Column(db.String(200), nullable=False)
password = db.Column(db.String(200), nullable=False)
dateofjoin = db.Column(db.DateTime, nullable=True)
email = db.Column(db.String(200), unique=True, nullable=False)
address = db.Column(db.String(200), nullable=False)
mobile = db.Column(db.String(200), nullable=False)
def __repr__(self):
return f"User('{self.userid}','{self.username}', '{self.email}', '{self.designation}', '{self.password}')"
在您的用户模型中,将primary_key'userid'重命名为'id'。更新数据库,然后重试。