为什么Authenticate在django中返回None

时间:2016-04-26 11:08:51

标签: python django

我正在尝试验证我的自定义用户

def login_user(request):
    print "hi"
    context = RequestContext(request)
    email = request.POST.get('username')
    password = request.POST.get('password')
        # print type(username)
        # print "username",username
    try:
        print "email-->",email, "password", password
        user=authenticate(username=email,password=password)

        print 'user-->',user
        if user.is_active:
            json = {"email":email} 
            return render(request, 'success.html', json)
        else:
            return HttpResponse("Your  account is disabled.")
    except ObjectDoesNotExist:
        return HttpResponse("INvalid User")

当我点击此代码时,它总是给我用户==无。 我的身份验证方法返回None。为什么会发生这种情况

3 个答案:

答案 0 :(得分:1)

将变量而不是其名称作为字符串传递

user=authenticate(username=email, password=password)

而不是

user=authenticate(username="email", password="password")

here你明白为什么它会返回None

答案 1 :(得分:0)

user=authenticate(username="email",password="password")

如果您给出引号中的值,它将采用原始值。删除引号并尝试如下以获取要替换的变量的值。

user=authenticate(username=email,password=password)

答案 2 :(得分:0)

USERNAME_FIELD = 'email'

它返回none,因为您给出的指定EMAIL的用户名不匹配,authenticate方法通过用户名进行身份验证,而不是通过电子邮件进行身份验证,以使用电子邮件作为上面的用户名指定,并使用User.DoesNotExist进行异常。