您的位置:

django有ValueError("Hasher %r doesn't specify a library attribute" % self.__class__.__name__)报错是怎么回事

  发布时间:2023-03-18 17:26:59
报错的原因这个错误的出现通常是因为你在 Django 项目的设置文件 中指定的密码哈希算法没有在你的 Django 应用程序中实现。可以尝试以下解决方案:- 检查你是否在 Django 项目的设置文件 中指定了正确的密码哈希算法。例如,如果你的 Django 应用程序中有一个名为 `hashers.py` 的模块,其中包含了类,则可以使用以下代码将其指定为密码哈希算法

报错的原因

这个错误的出现通常是因为你在 Django 项目的设置文件 (settings.py) 中指定的密码哈希算法没有在你的 Django 应用程序中实现。

可以尝试以下解决方案:

- 检查你是否在 Django 项目的设置文件 (settings.py) 中指定了正确的密码哈希算法。例如,如果你在设置文件中使用了 `PBKDF2PasswordHasher`,请确保你的 Django 应用程序中实现了该哈希算法

- 确保 Django 应用程序中实现的密码哈希算法与你在设置文件中指定的密码哈希算法匹配。如果你在设置文件中使用了 `PBKDF2PasswordHasher`,请确保你的 Django 应用程序中实现的也是 `PBKDF2PasswordHasher`。

如何解决

解决这个错误的一种方法是在 Django 项目的设置文件 (settings.py) 中指定一种在你的 Django 应用程序中已实现的密码哈希算法。例如,如果你在设置文件中使用了 `PBKDF2PasswordHasher`,请确保你的 Django 应用程序中也实现了 `PBKDF2PasswordHasher`。

首先,打开 Django 项目的设置文件 (settings.py)。找到 `PASSWORD_HASHERS` 设置,然后确保你在其中指定的密码哈希算法在你的 Django 应用程序中已实现。例如,如果你在设置文件中使用了 `PBKDF2PasswordHasher`,请确保你的 Django 应用程序中也实现了 `PBKDF2PasswordHasher`。

例如,以下是一个使用 `PBKDF2PasswordHasher` 的 `PASSWORD_HASHERS` 设置的示例:


PASSWORD_HASHERS = [
    'django.contrib.auth.hashers.PBKDF2PasswordHasher',
]

请注意,如果你使用的是自定义密码哈希算法,请确保在 Django 应用程序中实现了该算法,并在 `PASSWORD_HASHERS` 设置中指定了正确的类名。

使用例子

是的,这里有一个自定义密码哈希算法的示例。假设你已经在 Django 应用程序中实现了一个名为 `MyCustomPasswordHasher` 的密码哈希算法,则可以在 Django 项目的设置文件 (settings.py) 中使用以下代码将其指定为密码哈希算法


PASSWORD_HASHERS = [
    'path.to.MyCustomPasswordHasher',
]

请注意,在上面的代码中,`path.to` 应替换为你的 Django 应用程序中 `MyCustomPasswordHasher` 类的真实路径。

例如,如果你的 Django 应用程序中有一个名为 `hashers.py` 的模块,其中包含了 `MyCustomPasswordHasher` 类,则可以使用以下代码将其指定为密码哈希算法


PASSWORD_HASHERS = [
    'myapp.hashers.MyCustomPasswordHasher',
]