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

问题描述 投票:15回答:1

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

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

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

python django django-users
1个回答
34
投票

使用user.has_usable_password

>>> a = User.objects.create_user('user1', '[email protected]')
>>> b = User.objects.create_user('user2', '[email protected]', password='secret')
>>> a.has_usable_password()
False
>>> b.has_usable_password()
True

更新:

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

在Django 2.1中更改:

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

© www.soinside.com 2019 - 2024. All rights reserved.