python - 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:我已经为身份验证编写了一个自定义后端。
解决方案
实际上login()
方法没有返回类型。您必须先检查authenticate()
方法的结果。如果身份验证失败,则authenticate()
方法返回 None。在这种情况下,意味着没有提供用户名和密码的用户。所以如果结果authenticate()
为无,你可以给出警告并且不要调用login()
方法。
推荐阅读
- css - LESS 类本身声明
- monaco-editor - Monaco-editor :有没有办法防止光标/编辑器的焦点在单击编辑器外部时丢失(模糊)
- symfony - SYMFONY Serializer - 解码数组中的 XML 文件,强制子元素的类型
- azure - 尝试通过 python msal 库访问 Microsoft Power Automate API
- symfony4 - 传递给服务的参数在 shopware 6 中给出依赖不存在服务错误
- c++ - 使用 WxWidgets 和柯南的未定义符号
- discord - 带有规则筛选的自动角色
- reactjs - 有没有办法可以在基于类的组件中使用自定义挂钩?
- asp.net-mvc - ASP.NET MVC 最后登录的用户总是替换上一个登录的用户
- php - TCPDF Pyidoungsu(unicode)字体顺序错误