您的位置:

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)