潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

 当 DEBUG=True 时,django 内部的404报错信息,

潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

自带的报错信息,

潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

要自定义404信息,要先把 DEBUG=False ,

之后要自定义4040页面,有两种方法,

  方法1,在潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)创建404页面

潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

这样就配置完成,当访问不存在的页面时,跳转到自定义的404页面中,

潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

 方法2,创建404.html文件后,写个视图函数渲染,传入 status=404 状态码,(可自定义403,500)

潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

之后在主 urls 文件中给这些配置路由,要在主 urls 文件中导入该 APP 的视图

潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

在该项目中的数据库中存放着 auth 的关系表,

潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

用户基本信息表:

在 auth_user 表中可以查看到昨天创建 的 admin 用户

潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

 潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

其中,user 表,group 表,permlssion 表,是多对多的表关系,

 潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

注册视图函数的写法:

要在视图函数中导入 auth 模型,

潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

登录视图函数的写法:

 潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

在 home 视图函数:

潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

在页岩显示用户名时,在 html 文件中直接接收 request.user

潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

退出登录视图函数:

潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

from django.shortcuts import render,redirect,reverse
from django.http import HttpResponse
from .forms import *        # 导入 form 文件

#     导入 auth 系统的模型,表        用户,  组,    权限
from  django.contrib.auth.models import User,Group,Permission

#     导入 auth 系统的模型,表     登录,    保持登录, 退出
from django.contrib.auth import authenticate, login,    logout


# Create your views here.

def home(request):
    return render(request,'form_test/home.html' )


def login_test(request):
    # 登录
    if request.method =='POST':
        form = LoginForm(request.POST)                #    拿到用户输入信息
        if form.is_valid():                             #  判断合法性
            username = form.cleaned_data.get('username')
            password = form.cleaned_data.get('password')
            # auth 验证用户登录
            user = authenticate(username=username,password=password)
         
            if user:                                        #  登录成功
                login(request,user)                        #   保持登录
                return redirect(reverse('home'))
            else:
                form = RegisterFrom()
                return render(request,'form_test/register.html',{'form':form})
    else:
        form = LoginForm()                                               #    实例化 form 表单
        return render(request,'form_test/login.html',{'form':form})


def register(request):
    # 注册信息
    if request.method =='POST':
        form = RegisterFrom(request.POST)                                # 从 form 表单中拿数据
        if form.is_valid():                                              # 判断数据合不合法
            username = form.cleaned_data.get('username')
            password = form.cleaned_data.get('password')
            password_repeat = form.cleaned_data.get('password_repeat')
            email = form.cleaned_data.get('emil')
            if password == password_repeat:                              # 如果两位再次输入的密码相同,
                #  存入 auth 模型的表中
                User.objects.create_user(username=username,
                                         password=password,
                                         email=email)
                return redirect(reverse('login_test'))                  # 注册成功 后跳转

            else:return redirect(reverse('register'))                   # 失败,重新注册
        else:return redirect(reverse('register'))                       # 如果不合法,重新注册
    else:
        form = RegisterFrom()
        return render(request,'form_test/register.html',{'form':form})


def logout_test(request):
    logout(request)
    return redirect(reverse('home'))

  

权限管理:

实例的实现:只有在登录后才能进入博客主页,

潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

1, 在主目录的配置文件中添加一路径,如果没有登录,就跳转到这个指定目录下,

潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

2, 给博客主页 的视图函数添加权限,装饰器,

 潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

在地址栏中可以看到 next 的值,就是博客主页的 url,

 潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

在登录视图函数中打印出 next 的值,:

潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

用户对数据的增,删,改,查,的管理权限:

查看数据库中的每一张表都有这四个功能,

潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

在视图中的增删改查添加  permission_required  权限管理 装饰器,

 潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

视图哈数:

 潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

 潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

 添加权限后的视图,没有登录,级普通用户,是不能访问的,

这里可以对相关表的修改,进行用户权限的管理,

如: 在某个视图中导入 auth 的相关表,对一个用户做修改密码的操作

潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

 写个视图函数: 这里对 gdwz922922 用户进行修改密码的操作,

 潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

配置下路由:

 潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

访问该视图后就可以成功修改密码,

 潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

同样方法可以对这个用户进行用户权限的修改,(多对多关系表)

潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

用户组,给一个组开通相关权限,把需要该权限的用户统一放到这个组里,实现批量修改用户权限的功能,

1,写个创建组的视图函数:

潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

2,地址样中访问这个视图

 潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

3,给这个组添加权限,

潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

4,地址样中访问这个视图

5,往组里加人

潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

 这样就完成了从创建组到用户分组的过程