Django 用户认证系统


参考视频: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 :数据库迁移记录

二、auth模块

登录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.效果图

在这里插入图片描述
在这里插入图片描述

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页