潭州课堂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
退出登录视图函数:
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,往组里加人
这样就完成了从创建组到用户分组的过程
潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)的更多相关文章
- 潭州课堂25班:Ph201805201 django框架 第五课 自定义简单标签,包含标签,模型类创建,梳理类创建 (课堂笔记)
自定义标签同自定义过渡器一样,要创建文件,在配置文件中以APP方法注册,对方法进注册,在 html 文件中引入,.. 由模板传参 在 在配置文件中改时区: 由视图函数传参 包含标签: 当有这种重复的代 ...
- 潭州课堂25班:Ph201805201 django 项目 第十课 自定义错误码,完成图片验证码,用户是否被注册功能 (课堂笔记)
把 视图传到前台的 JsonResponse(data=data) 先进行处理,之后再传到前台, 处理:引用自定义错误代码,把错误代码返回给前台,前台根据错误代码中文提示 class Code: O ...
- 潭州课堂25班:Ph201805201 django框架 第四课 模板常用标签,模板继承与引用,自定义过渡器 (课堂笔记)
if 语句 判断传入的 name 值 建好这些文件后,对 url 进行配置 在浏览器中访问 for 循环 页面跳转: 通过 name 跳转时要在 urls 文件中为该 path 设置 name 带参 ...
- 潭州课堂25班:Ph201805201 django框架 第十一课 保持登录,注册,登录 (课堂笔记)
保持登录 在 django 中的内置 sessions 在项目的主目录中的配置文件 在数据库中 在视图函数中写登录 在页面登录后会出现 查看数据库内容 这样就实现保持登录 退出登录 注册: 1,创建模 ...
- 潭州课堂25班:Ph201805201 django框架 第七课 常用 字段类型及参数,关系表的实现,表关系对象add,create的方法 (课堂笔记)
写个类,创建表格 执行命令生成文件 提交,在数据库中创建 进入数据库查看 对数据进行修改操作 只有用到 save() 才能触发 updaer_time 的更改, 下边 update 方法不会修改 up ...
- 潭州课堂25班:Ph201805201 django框架 第十课 GET,POST 请求 文件上传,HttpResponse,cookie (课堂笔记)
在项目中新建个APP, 在主目录中的配置文件中进行 APP 注册 在主目录中的 urls 文件中进行路径分配 新建 urrls 文件 进行分路由配置 创建模板文件 html 文件 写个 form 表单 ...
- 潭州课堂25班:Ph201805201 django框架 第八课 表关联对象方法add,create,remove,clear,多表查询 (课堂笔记)
查表: 数据的插入 新建添加 删除 清空
- 潭州课堂25班:Ph201805201 django框架 第六课 模型类增删改查,常用 的查询矣查询条件 (课堂笔记)
在视图函数中写入增删改查的方法 增: 在 urls 中配置路径 : 查: 1: 在后台打印数据 在模型类中添加格式化输出 : QuerySet,反回的是个对象,可以按索引聚会,用 for 循环,, 找 ...
- 潭州课堂25班:Ph201805201 django框架 第三课 模板路径,变量,过滤器,静态文件的引用 (课堂笔记)
第二种方法 首先 'APP_DIRS': True, 将 app 的名字在 INSTALLED_APPS 进行注册 模板变量 传的各种数据类型,和取值 过渡器: 静态文件: 在项目文件目录 中创建 ...
随机推荐
- sass基础—属性嵌套以及跳出嵌套 @at-root
/*注意:定义的变量若是没有使用则不会编译到css文件中.*//*1)sass的局部变量*/$font:14px;//定义$font:12px !default; //没有default时是重新赋值, ...
- 理解并设计rest/restful风格接口
网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备......). 因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信.这导致AP ...
- python WebDriver如何处理右键菜单
WebDriver如何处理右键菜单 一.背景 在学习selenium webdriver的过程中,遇到这样一个问题.ActionChains类中提供了context_click的方法,它可以用来在we ...
- C++ Primer 笔记——类成员指针
1.当我们初始化一个成员指针或为成员指针赋值时,该指针并没有指向任何数据.成员指针指定了成员而非成员所属的对象,只有当解引用成员指针时,我们才提供对象信息. 2.和普通的函数指针类似,如果成员存在重载 ...
- inline namespace
无意中看到C++11中的新特性inline namespace, 先附上官方的解释 Inline namespace The inline namespace mechanism is intende ...
- ORACLE EHCC(exadata hybrid columnar compression)
目录: 1. 简介 2. 压缩方式及压缩比 3. 压缩哪些数据 4. 可能有用的脚本 一.简介 EHCC(Exadata Hybrid Columnar Compression),是Oralce 数据 ...
- salt 执行shell 脚本 修改名字
#!/bin/bash #命令 匹配主机 执行模块 脚本路径,必须放在salt目录下 源主机名 修改的主机名 #salt tt_LD_LM_LC_1 cmd.script salt://init/re ...
- MariaDB修改默认字符集
MariaDB修改默认字符集,以及创建数据库授权 1 . 修改server默认字符集utf8 [root@aws my.cnf.d]# vim /etc/my.cnf.d/server.cnf [my ...
- C#获取一周的工作日显示(星期几)
代码如下: gridBandW1.Caption = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetDayName ...
- 一脸懵逼学习Storm的搭建--(一个开源的分布式实时计算系统)
Storm的官方网址:http://storm.apache.org/index.html :集群部署的基本流程(基本套路): 集群部署的流程:下载安装包.解压安装包.修改配置文件.分发安装包.启动集 ...