使用Flask-Login时,Python中的字节和整数问题

问题描述 投票:-1回答:1

基本上我正在尝试使用flask-login定义用户加载器,并且我必须通过我的用户的数据库ID。我遇到了某种无效的文字错误。

我试过转换这个'字节?'从整数到字符串和所有种类,我尝试用几种方法解码它,如UTF-8,但仍然没有运气。

@login_manager.user_loader
def load_user(id):
    return accounts.query.get(int(str(id)))

这是控制台抛出的错误。

Traceback (most recent call last):
  File "d:\Programming\Python (Flask)\MRP UCP\env\lib\site-packages\flask\app.py", line 2292, in wsgi_app
    response = self.full_dispatch_request()
  File "d:\Programming\Python (Flask)\MRP UCP\env\lib\site-packages\flask\app.py", line 1815, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "d:\Programming\Python (Flask)\MRP UCP\env\lib\site-packages\flask\app.py", line 1718, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "d:\Programming\Python (Flask)\MRP UCP\env\lib\site-packages\flask\_compat.py", line 35, in reraise
    raise value
  File "d:\Programming\Python (Flask)\MRP UCP\env\lib\site-packages\flask\app.py", line 1813, in full_dispatch_request
    rv = self.dispatch_request()
  File "d:\Programming\Python (Flask)\MRP UCP\env\lib\site-packages\flask\app.py", line 1799, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "d:\Programming\Python (Flask)\MRP UCP\env\lib\site-packages\flask_login\utils.py", line 259, in decorated_view
    elif not current_user.is_authenticated:
  File "d:\Programming\Python (Flask)\MRP UCP\env\lib\site-packages\werkzeug\local.py", line 348, in __getattr__
    return getattr(self._get_current_object(), name)
  File "d:\Programming\Python (Flask)\MRP UCP\env\lib\site-packages\werkzeug\local.py", line 307, in _get_current_object
    return self.__local()
  File "d:\Programming\Python (Flask)\MRP UCP\env\lib\site-packages\flask_login\utils.py", line 26, in <lambda>
    current_user = LocalProxy(lambda: _get_user())
  File "d:\Programming\Python (Flask)\MRP UCP\env\lib\site-packages\flask_login\utils.py", line 335, in _get_user
    current_app.login_manager._load_user()
  File "d:\Programming\Python (Flask)\MRP UCP\env\lib\site-packages\flask_login\login_manager.py", line 359, in _load_user
    return self.reload_user()
  File "d:\Programming\Python (Flask)\MRP UCP\env\lib\site-packages\flask_login\login_manager.py", line 321, in reload_user
    user = self.user_callback(user_id)
  File "D:\Programming\Python (Flask)\MRP UCP\app.py", line 25, in load_user
    return accounts.query.get(int(str(id)))
ValueError: invalid literal for int() with base 10: "b'5'"
127.0.0.1 - - [31/Mar/2019 09:12:10] "GET /home HTTP/1.1" 500 -

我是最新版的qazxsw poi,qazxsw poi,qazxsw poi。我也在我的脚本中使用sqlalchemy和其他一些东西,例如flask-sqlalchemy用于密钥和一些时间跟踪事物。

帮助将不胜感激:)

python flask flask-sqlalchemy flask-login
1个回答
0
投票

您将字节flask-login转换为字符串bcrypt,因此您的字符串包含字母b和单引号。 urandom不理解这种凌乱的字符串,你应该做的只是删除b'5'函数:

"b'5'"
© www.soinside.com 2019 - 2024. All rights reserved.