gpt4 book ai didi

python - Flask-Login:特定属性的错误

转载 作者:行者123 更新时间:2023-11-28 22:44:41 25 4
gpt4 key购买 nike

我正在尝试创建和使用与 Flask-Login 一起使用的用户函数,如下所示:

class User(db.Model):
username = db.Column(db.String(80), primary_key=True)
passhash = db.Column(db.String(160))
posts = db.relationship('Idea', backref='user')

def __init__(self, username, password):
self.username = username
self.passhash = generate_password_hash(password)

def __str__(self):
return "User: " + self.username + " Hash: " + self.passhash

# Managing passwords using Werkzeug security library
def check_password(self, password):
return check_password_hash(self.passhash, password)

# Necessary functions for Flask-Login session management
def is_authenticated(self):
return True

def is_active(self):
return True

def is_anonymous(self):
# Anonymous users aren't supported
return False

def get_id(self):
return unicode(self.username)

但是,当尝试使用这段代码时,我看到了错误:

AttributeError: 'User' object has no attribute 'is_active'

遇到this answer ,我试图通过将函数从 class User(db.Model) 更改为 class User(db.Model, UserMixin) 来解决这个问题,即使我是手动实现的方法。这样做消除了上述错误,我开始看到:

NotImplementedError: No id attribute - override get_id

我在这里做错了什么?虽然我没有名为 id 的属性,但我已经设置了 get_id 函数(如上所述)。上面的函数没有被提取是否有特殊原因?

当我将 user = User.query.get(form.username.data) 传递给 login_user() 时,尤其会发生错误。

最佳答案

您是如何设置 user_loader 的? ?您必须像这样向它传递一个用户实例:

@login_manager.user_loader
def load_user(user_id):
return User.query.filter(User.id == int(user_id)).first()

Example .

关于python - Flask-Login:特定属性的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29199624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com