【问题标题】:Masonite - TypeError: Can't convert 'Undefined' object to str implicitlyMasonite - TypeError:无法将“未定义”对象隐式转换为 str
【发布时间】:2018-10-14 08:36:59
【问题描述】:
我正在使用 Masonite 框架,在 Masonite 1.6 中运行 craft auth 命令后注册用户时出现错误。堆栈跟踪的结尾如下所示:
{% for i, line in enumerate(open(stack.filename)) %}
TypeError: Can't convert 'Undefined' object to str implicitly
【问题讨论】:
标签:
python
frameworks
masonite
【解决方案1】:
这已在 Masonite 1.6.3 中修复。问题是存在一个错误,密码在使用 bcrypt 散列后没有被解码回字符串。显然 MySQL 在插入数据库之前将字节转换为字符串,但 Postgres 和 SQLite 没有。
升级
修复方法是通过运行以下命令升级 Masonite:
pip install --upgrade -r requirements.txt
升级到最新版本(所以craft auth 不会再创建一个有这个错误的控制器)
补丁
并通过将 RegisterController 中的 ~line 20 更改为:
来修补当前应用程序
password = bytes(bcrypt.hashpw(
bytes(Request.input('password'), 'utf-8'), bcrypt.gensalt()
)).decode('utf-8')