在将每个文档插入集合之前,我正在尝试存储salt和哈希密码.但在编码salt和密码时,它显示以下错误:
line 26, in before_insert
document['salt'] = bcrypt.gensalt().encode('utf-8')
AttributeError: 'bytes' object has no attribute 'encode'
这是我的代码:
def before_insert(documents):
for document in documents:
document['salt'] = bcrypt.gensalt().encode('utf-8')
password = document['password'].encode('utf-8')
document['password'] = bcrypt.hashpw(password, document['salt'])
我在virtualenv中使用eve框架和python 3.4
解决方法:
你正在使用:
bcrypt.gensalt()
此方法似乎生成一个字节对象.这些对象没有任何编码方法,因为它们仅适用于ASCII兼容数据.所以你可以尝试不用.encode(‘utf-8’)
Bytes description in python 3 documentation