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

时间:2013-06-22 11:27:13

标签: python django django-users

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

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

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

1 个答案:

答案 0 :(得分:32)

使用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的行为发生了变化。

  

在Django 2.1中更改:

     

在旧版本中,如果密码为None或空字符串,或者密码使用的密码不在PASSWORD_HASHERS设置中,则此函数也会返回False。该行为被视为一个错误,因为它会阻止具​​有此类密码的用户请求重置密码。