赞
踩
参考视频:https://ke.qq.com/course/320021
Django内置一个用户认证系统,使用auth模块实现。
auth模块提供了登录、注册、效验、修改密码、注销、验证用户是否登录等功能。
1.1.Django默认创建的数据库表
• auth_user :用户表
• auth_user_groups :用户所属组的表
• auth_user_user_permissions :用户权限表
• auth_group :用户组表
• auth_group_permissions :用户组权限表
• auth_permission :存放全部权限的表,其他的表的权限都是从此表中外键连接过去的
• django_session :保存HTTP状态
• django_migrations :数据库迁移记录
登录Django后台管理系统,创建devops用户,用于后面的测试
2.1.login()
登录成功,跳转到首页
views.py:
from django.contrib import auth def login(request): if request.method == "GET": return render(request, 'login.html') elif request.method == "POST": # 获取前端登录的用户名和密码 username = request.POST.get('username', None) password = request.POST.get('password', None) # 对用户身份验证 user = auth.authenticate(username=username, password=password) #验证通过返回用户对象,验证失败返回None if user: auth.login(request, user) # 将request与用户对象(包含session)传给login()函数 return redirect(index) # 重定向到函数名,这里是首页 else: msg = "用户名或密码输入错误" return render(request, 'login.html', {"msg": msg})
login.html:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>登录页面</title> </head> <body> <h1>欢迎访问管理系统</h1> <form action="" method="post"> 用户名: <input type="text", name="username"><br> <!--输入的用户名保存到username变量,传回后端--> 密码: <input type="text", name="password"><br> <button type="submit">登录</button><br> </form> <span style="color: red">{{ msg }}</span> </body> </html>
2.2.logout()
views.py:
from django.contrib.auth import login,logout
def logout(request):
auth.logout(request) # 清除当前用户的session信息
return redirect(login)
2.3.login_required装饰器
login_required装饰器:判断用户是否登录,如果没有登录引导至登录页面,登录成功后跳转到目的页面。
views.py:
from django.contrib.auth.decorators import login_required
@login_required()
def index(request):
return render(request, 'index.html')
index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<h1>欢迎访问首页</h1>
<a href="/myldp/logout/">退出</a>
</body>
</html>
在settings.py文件设置没有登录默认跳转页面:
LOGIN_URL = '/myldp/login/'
2.4.效果图
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。