django:如何知道未经过身份验证的原因

时间:2018-05-28 10:36:32

标签: django

我正在尝试使用身份验证功能

在Django Shell上测试用户名和原始密码
    username = "test@test.com"
    raw_password = "password"
    user = authenticate(username=email, password=raw_password)

我知道这个用户名和密码不存在。当我运行此代码时,user将返回None。有没有办法我得到一些失败的状态或失败的原因。

我想将失败的原因发送到我的应用程序,例如电子邮件无效或密码无效或用户未激活或出于任何原因未进行身份验证。

1 个答案:

答案 0 :(得分:1)

没有测试顺便说一句,但应该工作!! (仅检查用户是否存在以及密码对用户是否正确,以及是否有效)

from django.contrib import messages

if user is not None:
    if not user.is_active:
        messages.add_message(request, messages.WARNING, 'Account has been disabled!')
    # do what you want
else:
    try:
        x = User.objects.get(username=username)
    except User.DoesNotExist:
        messages.add_message(request, messages.WARNING, 'Invalid email!')
    else:
        if not x.check_password(password):
            messages.add_message(request, messages.WARNING, 'Invalid password!')