Django中关于用户登录使用authenticate进行用户登录判别返回user为空

在Django的2.x版本以后使用Django内置的authenticate进行用户合法性进行判别时,会判断is_create状态是否为1,如果is_active状态为0,则返回用户未None,即如果用户未激活则认为不存在该用户。开始看的教程是1.x版本的,一直以为是使用user = User.objects.create_user(username , email , password)...
摘要由CSDN通过智能技术生成

在Django的2.x版本以后使用Django内置的authenticate进行用户合法性进行判别时,会判断is_create状态是否为1,如果is_active状态为0,则返回用户未None,即如果用户未激活则认为不存在该用户。

开始看的教程是1.x版本的,一直以为是使用

user = User.objects.create_user(username , email , password)

创建用户时,因为密码是使用加密方式存储在数据库中的,
我感觉是不是通过

user_name = request.POST.get('username')
pass_word = request.POST.get('pwd')

request方法提取表单中的输入内容由于是未加密的导致password输入和提取的数据库中的加密的password匹配不成功所以导致返回用户为空。

验证是否提取的password与数据库中的password是否相同

首先导入

from django.contrib.auth.hashers import check_password

其中提供了check_password的方法
对两个password进行验证

user = User.objects.get(username = username)
pwd = user.password
print('*'*50)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Django ,可以使用内置的用户认证系统来实现用户登录。这个系统已经包含了一个名为 User 的模型,可以在其保存用户的信息,包括用户名、密码等。 要使用用户表的用户进行登录,需要完成以下步骤: 1. 在 settings.py 文件,将 AUTHENTICATION_BACKENDS 设置为: ```python AUTHENTICATION_BACKENDS = [ 'django.contrib.auth.backends.ModelBackend', ] ``` 这将指定使用 Django 内置的 ModelBackend 进行用户认证。 2. 在 views.py 文件,编写登录逻辑,可以使用 Django 内置的 login() 函数来实现: ```python from django.contrib.auth import authenticate, login from django.shortcuts import render, redirect def login_view(request): if request.method == 'POST': username = request.POST['username'] password = request.POST['password'] user = authenticate(request, username=username, password=password) if user is not None: login(request, user) return redirect('home') else: error_msg = 'Invalid login credentials' return render(request, 'login.html', {'error_msg': error_msg}) else: return render(request, 'login.html') ``` 在这个函数,首先获取用户提交的登录表单数据,然后使用 authenticate() 函数进行认证。如果认证成功,就使用 login() 函数将用户登录状态保存到会话,并重定向到主页。如果认证失败,就返回登录页面并提示错误信息。 3. 在模板,创建登录表单,并将表单数据提交到上面编写的视图函数: ```html <form method="post"> {% csrf_token %} <input type="text" name="username" required> <input type="password" name="password" required> <button type="submit">Login</button> </form> ``` 这样就可以实现使用用户表的用户进行登录了。需要注意的是,如果你的用户表结构不同,需要修改 authenticate() 函数的参数以及模板表单字段的名称。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值