首页 > 解决方案 > django.contrib.auth login() 返回无问题

问题描述

我是 django 新手,我一直在尝试为我的 django 项目实现登录系统。


    template_name = 'rest_framework/login.html'
    if request.method == 'POST':
        email = request.POST['username']
        password = request.POST['password']
        user = authenticate(request, username=email, password=password)
        print (login(request,user))
        login(request,user)
        return redirect('core:home')
    return render(request, template_name)

出于某种原因,我从 django.contrib.auth 导入的登录功能返回 None 即使用户在身份验证后具有正确的用户对象并且请求具有 POST 请求对象。这导致用户没有被添加到会话中,因此当我将其重定向到core:home时,我在 request.user 中获得了 AnonymousUser。帮助将不胜感激。

PS:我已经为身份验证编写了一个自定义后端。

标签: pythondjangodjango-rest-frameworkweb-development-server

解决方案


实际上login()方法没有返回类型。您必须先检查authenticate()方法的结果。如果身份验证失败,则authenticate()方法返回 None。在这种情况下,意味着没有提供用户名和密码的用户。所以如果结果authenticate()为无,你可以给出警告并且不要调用login()方法。


推荐阅读