锋哥原创的Python Web开发 Django5视频教程:
2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计57条视频,包括:2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~、第2讲 Django5安装、第3讲 Django5创建项目(用命令方式)等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV14Z421z78C/用户登录功能,后端验证主要通过auth模块提供的authenticate校验方法,以及login登录方法实现。
首先urls.py里加下映射:
# 跳转登录页面path('auth/toLogin', helloWorld.views.to_login),# 提交登录请求path('auth/login', helloWorld.views.login),
登录页面login.html:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>登录页面</title>
</head>
<body>
<form action="/auth/login" method="post">{% csrf_token %}<table><tr><th>用户登录</th></tr><tr><td>用户名:</td><td><input type="text" name="username" value="{{ username }}"></td></tr><tr><td>密码:</td><td><input type="password" name="password" value="{{ password }}"></td></tr><tr><td><input type="submit" value="提交"></td><td><font color="red">{{ errorInfo }}</font></td></tr></table>
</form>
</body>
</html>
网站首页index.html,登录成功后跳转:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>网站首页</title>
</head>
<body>
网站首页,欢迎: {{ request.user }}
</body>
</html>
views.py里实现to_login和login方法。
通过auth.authenticate校验用户是否已经存在。校验用户成功后,返回的是一个封装好的用户对象;校验错误则返回None
用户对象is_active方法判断用户是否激活。
通过调用auth.login,用户登录成功之后,返回给客户端登录的凭证或者说是令牌、随机字符串,则不需要我们去操作diango_session表,会自动创建session
当执行完auth.authenticate
和auth.login
后,也就是登录成功后,我们就可以通过request.user
直接获取到当前登录的用户对象数据
-
登录成功的情况下,该方法获得的是登录用户对象
-
登录不成功的情况下,该方法获得的是匿名对象
AnonymousUser
def to_login(request):"""跳转登录页面:param request::return:"""
return render(request, 'auth/login.html')
def login(request):"""登录处理:param request::return:"""username = request.POST.get('username')password = request.POST.get('password')# 通过auth模块来检验加密后的密码 ,校验成功返回用户对象,否则返回NoneresUser: User = auth.authenticate(request, username=username, password=password)if resUser and resUser.is_active:print(resUser, type(resUser))# 用户登录成功之后(返回给客户端登录的凭证或者说是令牌、随机字符串)auth.login(request, resUser)return render(request, 'auth/index.html')else:return render(request, 'auth/login.html',context={"errorInfo": "用户名或者密码错误", "username": username, "password": password})
我们来测试下:浏览器输入: http://127.0.0.1:8000/auth/toLogin
进入登录页面:
用户名密码输入错误,提示报错信息:
用户名密码输入正确,则跳转到主页: