潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)
当 DEBUG=True 时,django 内部的404报错信息,
自带的报错信息,
要自定义404信息,要先把 DEBUG=False ,
之后要自定义4040页面,有两种方法,
方法1,在创建404页面
这样就配置完成,当访问不存在的页面时,跳转到自定义的404页面中,
方法2,创建404.html文件后,写个视图函数渲染,传入 status=404 状态码,(可自定义403,500)
之后在主 urls 文件中给这些配置路由,要在主 urls 文件中导入该 APP 的视图
在该项目中的数据库中存放着 auth 的关系表,
用户基本信息表:
在 auth_user 表中可以查看到昨天创建 的 admin 用户
其中,user 表,group 表,permlssion 表,是多对多的表关系,
注册视图函数的写法:
要在视图函数中导入 auth 模型,
登录视图函数的写法:
在 home 视图函数:
在页岩显示用户名时,在 html 文件中直接接收 request.user
退出登录视图函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | 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' )) |
权限管理:
实例的实现:只有在登录后才能进入博客主页,
1, 在主目录的配置文件中添加一路径,如果没有登录,就跳转到这个指定目录下,
2, 给博客主页 的视图函数添加权限,装饰器,
在地址栏中可以看到 next 的值,就是博客主页的 url,
在登录视图函数中打印出 next 的值,:
用户对数据的增,删,改,查,的管理权限:
查看数据库中的每一张表都有这四个功能,
在视图中的增删改查添加 permission_required 权限管理 装饰器,
视图哈数:
添加权限后的视图,没有登录,级普通用户,是不能访问的,
这里可以对相关表的修改,进行用户权限的管理,
如: 在某个视图中导入 auth 的相关表,对一个用户做修改密码的操作
写个视图函数: 这里对 gdwz922922 用户进行修改密码的操作,
配置下路由:
访问该视图后就可以成功修改密码,
同样方法可以对这个用户进行用户权限的修改,(多对多关系表)
用户组,给一个组开通相关权限,把需要该权限的用户统一放到这个组里,实现批量修改用户权限的功能,
1,写个创建组的视图函数:
2,地址样中访问这个视图
3,给这个组添加权限,
4,地址样中访问这个视图
5,往组里加人
这样就完成了从创建组到用户分组的过程
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步