AttributeError:“字节”对象没有属性“编码”

时间:2018-08-27 19:44:08

标签: flask pymongo python-3.6 bcrypt flask-pymongo

我正在尝试构建用户登录系统,并且已经成功构建了用户注册页面,但是当我尝试登录时,出现以下错误。我正在使用flask,python3.6和pymongo。 这是错误:AttributeError: 'bytes' object has no attribute 'encode' 请帮忙。

  

回溯(最近通话最近):     调用中的文件“ C:\ Users \ elvis \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ flask \ app.py”,第2309行       返回self.wsgi_app(环境,start_response)     wsgi_app中的文件“ C:\ Users \ elvis \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ flask \ app.py”,第2295行       响应= self.handle_exception(e)     在handle_exception中的文件“ C:\ Users \ elvis \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ flask \ app.py”,行1741       加价(exc_type,exc_value,tb)     重新举起文件“ C:\ Users \ elvis \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ flask_compat.py”,第35行       提高价值     wsgi_app中的文件“ C:\ Users \ elvis \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ flask \ app.py”,行2292       响应= self.full_dispatch_request()     1815行中的文件“ C:\ Users \ elvis \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ flask \ app.py”,在full_dispatch_request中       rv = self.handle_user_exception(e)     文件“ C:\ Users \ elvis \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ flask \ app.py”,行1718,在handle_user_exception中       加价(exc_type,exc_value,tb)     重新举起文件“ C:\ Users \ elvis \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ flask_compat.py”,第35行       提高价值     1813行中的文件“ C:\ Users \ elvis \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ flask \ app.py”,在full_dispatch_request中       rv = self.dispatch_request()     文件“ C:\ Users \ elvis \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ flask \ app.py”,行1799,在dispatch_request中       返回self.view_functionsrule.endpoint     登录文件“ C:\ Users \ elvis \ Desktop \ flask apps \ testmon \ even \ app \ run.py”,第30行       如果bcrypt.hashpw(request.form ['pass']。encode('utf-8'),login_user ['password'])== login_user ['password']。encode('utf-8'):   AttributeError:“字节”对象没有属性“编码”

a screenshot of the error page

2 个答案:

答案 0 :(得分:0)

仅提供Password=" "

示例:

pdf = pdfplumber.open(f,password='')

答案 1 :(得分:0)

回溯的最后一行

login_user['password']) == login_user['password'].encode('utf-8'): AttributeError: 'bytes' object has no attribute 'encode'

告诉您您正在传递类型为 bytes 的对象,而不是 str
因此,您正在尝试在 .encode() 对象上调用 bytes 方法。
您需要检查 login_user['password'] 值是什么,然后通过调用 decode() 对象 bytes 上的 login_user['password']).decode().encode('utf-8') 方法将其转换为字符串,或者将字符串值存储在此字典中开始。

从这个回溯我可以看出,你所做的没有多大意义,但除非你能分享代码,否则我能说的不多。

编辑:

login if bcrypt.hashpw(request.form['pass'].encode('utf-8'), login_user['password']) == login_user['password'].encode('utf-8'): AttributeError: 'bytes' object has no attribute 'encode'

您也可以从 .endoce('utf-8') 部分删除 login_user['password'],它也可以正常工作。