django出现TypeError("Password must be a string or bytes, got %s." % type(password).__qualname__)的解决方案
发布时间:2023-03-17 19:07:01
例如,如果你在 Django 的 User 模型中设置密码时,你可能会写出如下代码这里可能会抛出错误这是因为 set_password() 函数需要一个字符串或者字节类型的密码作为输入,而你传入的是一个整数。例如,你可以将密码转换为字符串然后调用 set_password() 函数或者将密码转换为字节类型然后调用 set_password() 函数希望这些信息能帮助你解决问题。
报错的原因
"TypeError("Password must be a string or bytes, got %s." % type(password).__qualname__)" 这个错误的原因是,你尝试将一个非字符串或者非字节类型的对象作为密码传入了 Django 中的某个函数。
例如,如果你在 Django 的 User 模型中设置密码时,你可能会写出如下代码:
from django.contrib.auth.models import User
user = User.objects.create(username='foo')
# 这里可能会抛出 "TypeError("Password must be a string or bytes, got %s." % type(password).__qualname__)" 错误
user.set_password(12345)
这是因为 set_password() 函数需要一个字符串或者字节类型的密码作为输入,而你传入的是一个整数。
为了解决这个错误,你需要将密码转换为字符串或者字节类型。例如,你可以将密码转换为字符串然后调用 set_password() 函数:
user.set_password(str(12345))
或者将密码转换为字节类型然后调用 set_password() 函数:
user.set_password(b'12345')
希望这些信息能帮助你解决问题。
如何解决
为了解决 "TypeError("Password must be a string or bytes, got %s." % type(password).__qualname__)" 这个错误,你需要将密码转换为字符串或者字节类型。
例如,你可以将密码转换为字符串然后调用 set_password() 函数:
user.set_password(str(12345))
或者将密码转换为字节类型然后调用 set_password() 函数:
user.set_password(b'12345')
希望这些信息能帮助你解决问题。
使用例子
以下是一个简单的例子,展示了如何将密码转换为字符串或者字节类型然后调用 set_password() 函数:
from django.contrib.auth.models import User
# 创建一个新用户
user = User.objects.create(username='foo')
# 将密码转换为字符串
password = str(12345)
user.set_password(password)
# 将密码转换为字节类型
password = b'12345'
user.set_password(password)