当 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系统权限管理 (课堂笔记)的更多相关文章

  1. 潭州课堂25班:Ph201805201 django框架 第五课 自定义简单标签,包含标签,模型类创建,梳理类创建 (课堂笔记)

    自定义标签同自定义过渡器一样,要创建文件,在配置文件中以APP方法注册,对方法进注册,在 html 文件中引入,.. 由模板传参 在 在配置文件中改时区: 由视图函数传参 包含标签: 当有这种重复的代 ...

  2. 潭州课堂25班:Ph201805201 django 项目 第十课 自定义错误码,完成图片验证码,用户是否被注册功能 (课堂笔记)

    把 视图传到前台的  JsonResponse(data=data) 先进行处理,之后再传到前台, 处理:引用自定义错误代码,把错误代码返回给前台,前台根据错误代码中文提示 class Code: O ...

  3. 潭州课堂25班:Ph201805201 django框架 第四课 模板常用标签,模板继承与引用,自定义过渡器 (课堂笔记)

    if 语句 判断传入的 name 值 建好这些文件后,对 url 进行配置 在浏览器中访问 for 循环 页面跳转: 通过  name 跳转时要在 urls 文件中为该 path 设置 name 带参 ...

  4. 潭州课堂25班:Ph201805201 django框架 第十一课 保持登录,注册,登录 (课堂笔记)

    保持登录 在 django 中的内置 sessions 在项目的主目录中的配置文件 在数据库中 在视图函数中写登录 在页面登录后会出现 查看数据库内容 这样就实现保持登录 退出登录 注册: 1,创建模 ...

  5. 潭州课堂25班:Ph201805201 django框架 第七课 常用 字段类型及参数,关系表的实现,表关系对象add,create的方法 (课堂笔记)

    写个类,创建表格 执行命令生成文件 提交,在数据库中创建 进入数据库查看 对数据进行修改操作 只有用到 save() 才能触发 updaer_time 的更改, 下边 update 方法不会修改 up ...

  6. 潭州课堂25班:Ph201805201 django框架 第十课 GET,POST 请求 文件上传,HttpResponse,cookie (课堂笔记)

    在项目中新建个APP, 在主目录中的配置文件中进行 APP 注册 在主目录中的 urls 文件中进行路径分配 新建 urrls 文件 进行分路由配置 创建模板文件 html 文件 写个 form 表单 ...

  7. 潭州课堂25班:Ph201805201 django框架 第八课 表关联对象方法add,create,remove,clear,多表查询 (课堂笔记)

    查表: 数据的插入 新建添加 删除 清空

  8. 潭州课堂25班:Ph201805201 django框架 第六课 模型类增删改查,常用 的查询矣查询条件 (课堂笔记)

    在视图函数中写入增删改查的方法 增: 在 urls 中配置路径 : 查: 1: 在后台打印数据 在模型类中添加格式化输出 : QuerySet,反回的是个对象,可以按索引聚会,用 for 循环,, 找 ...

  9. 潭州课堂25班:Ph201805201 django框架 第三课 模板路径,变量,过滤器,静态文件的引用 (课堂笔记)

    第二种方法 首先   'APP_DIRS': True, 将 app 的名字在 INSTALLED_APPS 进行注册 模板变量 传的各种数据类型,和取值 过渡器: 静态文件: 在项目文件目录 中创建 ...

随机推荐

  1. sass基础—属性嵌套以及跳出嵌套 @at-root

    /*注意:定义的变量若是没有使用则不会编译到css文件中.*//*1)sass的局部变量*/$font:14px;//定义$font:12px !default; //没有default时是重新赋值, ...

  2. 理解并设计rest/restful风格接口

    网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备......). 因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信.这导致AP ...

  3. python WebDriver如何处理右键菜单

    WebDriver如何处理右键菜单 一.背景 在学习selenium webdriver的过程中,遇到这样一个问题.ActionChains类中提供了context_click的方法,它可以用来在we ...

  4. C++ Primer 笔记——类成员指针

    1.当我们初始化一个成员指针或为成员指针赋值时,该指针并没有指向任何数据.成员指针指定了成员而非成员所属的对象,只有当解引用成员指针时,我们才提供对象信息. 2.和普通的函数指针类似,如果成员存在重载 ...

  5. inline namespace

    无意中看到C++11中的新特性inline namespace, 先附上官方的解释 Inline namespace The inline namespace mechanism is intende ...

  6. ORACLE EHCC(exadata hybrid columnar compression)

    目录: 1. 简介 2. 压缩方式及压缩比 3. 压缩哪些数据 4. 可能有用的脚本 一.简介 EHCC(Exadata Hybrid Columnar Compression),是Oralce 数据 ...

  7. salt 执行shell 脚本 修改名字

    #!/bin/bash #命令 匹配主机 执行模块 脚本路径,必须放在salt目录下 源主机名 修改的主机名 #salt tt_LD_LM_LC_1 cmd.script salt://init/re ...

  8. MariaDB修改默认字符集

    MariaDB修改默认字符集,以及创建数据库授权 1 . 修改server默认字符集utf8 [root@aws my.cnf.d]# vim /etc/my.cnf.d/server.cnf [my ...

  9. C#获取一周的工作日显示(星期几)

    代码如下: gridBandW1.Caption = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetDayName ...

  10. 一脸懵逼学习Storm的搭建--(一个开源的分布式实时计算系统)

    Storm的官方网址:http://storm.apache.org/index.html :集群部署的基本流程(基本套路): 集群部署的流程:下载安装包.解压安装包.修改配置文件.分发安装包.启动集 ...