擅长:python、mysql、java
<p>来自<code>.getsalt()</code>方法的<em>salt</em>是一个<em>bytes对象</em>,bcrypt模块的方法中的所有“salt”参数都期望它以这种特殊的形式出现。没有必要把它转换成别的东西。</p>
<p>与之相反,bcrypt模块的方法中的“password”参数应该是以<em>Unicode字符串</em>的形式出现的-在Python 3中,它只是一个<em>字符串</em>而已。</p>
<p>因此-假设您的原始<code>document['password']</code>是一个<em>字符串</em>,那么您的代码应该是</p>
<pre><code>def before_insert(documents):
for document in documents:
document['salt'] = bcrypt.gensalt()
password = document['password']
document['password'] = bcrypt.hashpw(password, document['salt'])
</code></pre>