所以我有一个烧瓶网络应用程序,除了登录部分之外一切都运行良好。我正在使用烧瓶的登录管理器,但在从用户加载器加载用户 ID 时遇到问题。
@login_manager.user_loader
def load_user(userid):
u = User.query.get(userid)
return User(u.password, u.firstname, u.lastname, u.email, u.datecreated)
这就是我的用户模型的定义方式:
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
password = db.Column(db.String(100),)
firstname = db.Column(db.String(100),)
lastname = db.Column(db.String(100),)
email = db.Column(db.String(40), unique=True)
datecreated = db.Column(db.Date,)
def __init__(self,password, firstname, lastname, email, datecreated):
self.password = password
self.firstname = firstname
self.lastname = lastname
self.email = email
if datecreated == None:
self.datecreated = datetime.date.today()
else:
self.datecreated = datecreated
def get_id(self):
return chr(self.id)
def is_authenticated(self):
return True
def is_active(self):
return True
def is_anonymous(self):
return False
def __repr__(self):
return '<User %r>' % (self.id)
我在尝试登录时收到 500 服务器错误,但是当我为查询硬编码用户 ID 时,一切正常,您始终以该用户身份登录。我尝试将其转换为 int,但出现invalid literal for int()错误。
这是回溯:
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1701, in __call__
return self.wsgi_app(environ, start_response)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1689, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1687, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1360, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1358, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1344, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/usr/local/lib/python2.7/dist-packages/flask_login.py", line 756, in decorated_view
elif not current_user.is_authenticated():
File "/usr/local/lib/python2.7/dist-packages/werkzeug/local.py", line 338, in __getattr__
return getattr(self._get_current_object(), name)
File "/usr/local/lib/python2.7/dist-packages/werkzeug/local.py", line 297, in _get_current_object
return self.__local()
File "/usr/local/lib/python2.7/dist-packages/flask_login.py", line 46, in <lambda>
current_user = LocalProxy(lambda: _get_user())
File "/usr/local/lib/python2.7/dist-packages/flask_login.py", line 794, in _get_user
current_app.login_manager._load_user()
File "/usr/local/lib/python2.7/dist-packages/flask_login.py", line 363, in _load_user
return self.reload_user()
File "/usr/local/lib/python2.7/dist-packages/flask_login.py", line 325, in reload_user
user = self.user_callback(user_id)
line 19, in load_user
return User(u.password, u.firstname, u.lastname, u.email, u.datecreated)
对此的任何帮助将不胜感激,因为我对此很陌生。谢谢!