python - 检查 Django 用户是否设置了密码

标签 python django django-users

我设置 if 语句来查看当前用户是否设置了密码。由于某种原因,它只是行不通。我试过:

{% if not user.password %}
{% if user.password == None %}
{% if user.password is None %}

我有 2 个用户帐户(打开不同的浏览器),一个有密码,另一个没有。当我使用上面的语句时,我在两个浏览器中得到了相同的显示。我做错了什么?

最佳答案

使用user.has_usable_password

>>> a = User.objects.create_user('user1', 'user1@example.com')
>>> b = User.objects.create_user('user2', 'user2@example.com', password='secret')
>>> a.has_usable_password()
False
>>> b.has_usable_password()
True

更新:

根据文档,has_usable_password 的行为发生了变化。

Changed in Django 2.1:

In older versions, this also returns False if the password is None or an empty string, or if the password uses a hasher that’s not in the PASSWORD_HASHERS setting. That behavior is considered a bug as it prevents users with such passwords from requesting a password reset.

关于python - 检查 Django 用户是否设置了密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17250226/

相关文章:

python - 拉取用户名 - 'ManyRelatedManager' 对象不支持索引

python - 导入错误 : No module named flask. ext.httpauth

javascript - 使用套索工具选择多线

python - DRF : Dynamically select Serializer class based on field value

python - Django 1.7 错误 NoReverseMatch 位于 '/post/'

android - 在 Android 中使用 Django 用户对象

python - 如何判断 qlistview 中的项目被放置在何处?

python - Receiving Assertion failed While generate adversarial samples 通过任何方法

python - 为什么我有这个数据库问题?

python - Django注册 View 如何从用户表单获取用户以将配置文件分配给用户