潭州课堂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系统权限管理 (课堂笔记)

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

上一篇:Django之权限管理插件


下一篇:Django实现Rbac权限管理