一、Auth系统中的表:

  从表的名称我们就能看出,

  auth_user,auth_group,auth_permission分别

  存放了用户,用户组,权限的信息表.

  另外三张表就是多对多的关系表

  User:User是auth模块中维护用户信息的关系模式(继承了models.Model), 数据库中该表被命名为auth_user.

  Group:User对象中有一个名为groups的多对多字段, 多对多关系由auth_user_groups数据表维护。Group对象可以通过user_set反向查询用户组中的用户。

  Permissio::Django的auth系统提供了模型级的权限控制, 即可以检查用户是否对某个数据表拥有增(add), 改(change), 删(delete)权限。数据库中该表被命名为auth_permission.

  auth系统中User模型常用的属性和方法:

  auth系统中User模型认证系统功能:

    create_user 创建用户

    authenticate 验证登录

    login 记住用户的登录状态

    logout 退出登录

    is_authenticated 判断用户是否登录

    login_required 判断用户是否登录的装饰器

二、登录注册的实现:

  1、导入需要用到的方法:

  2、注册里面模型类相关的修改(添加用户到数据库):

  3、登录里面模型相关修改(验证用户名,密码是否正确):

  使用auth系统实现状态保持与退出:

    登录里面保存状态的修改:

    退出登录里面的修改:

    login_required装饰器:每个模板页面都可拿到 用户名 :{{ user }}

  导入装饰器:

from django.contrib.auth.decorators import login_required

  会自动获取 next url;开始访问的是哪个url,登录过后就访问那个url

  在settings.py 文件中配置登录的url:

  导入:(当没有 next url 的时候要跳转到哪)

from django.urls import reverse_lazy

LOGIN_URL = reverse_lazy('app_name:name')   # 自定义的路由名
# 或者
LOGIN_URL = '/xxx/xxx/' # 直接写要跳转的路径

    给需要登录权限才能进入的视图添加login_required装饰器:

    这里是 app当中的index视图:

  next url的使用:(自定义方法)

    以路径传参的方式:

    从刚才的登录页跳转中,我们会看到一个next的参数,

    这个参数前面的需要登录的那个视图的url.

三、权限的实现:

  Permission权限模型:

    查看数据库中auth_permission这张表,在里面有所有的表的一些操作权限,这些是在表创建的同是添加进来的数据.

  permission_required装饰器:每个模板页面都可拿到当前用户所有权限 :{{ perms }}

  导入装饰器:

from django.contrib.auth.decorators import permission_required

  使用:如果没有这个权限就返回自己设置那个 LOGIN_URL 地址去

@permission_required('appname.权限名称',raise_exception=True) # raise_exception=True 表示发生冲突的时候报出异常 403

  给blog app当中的add添加博客的视图设置权限

    验证某个用户是否拥有某种权限:

用户名.has_perm('appname.权限名')

  Permission权限模型:

    注意:如果是超级用户是拥有所有权限的

    使用:

  自定义权限:(写在模型表里面的)

class Xxx(models.Model):
name = models.CharField(max_length=10) class Meta: # 自定义权限
permissions = (
('权限名','注释名'),
)

Django 学习第十二天——Auth 系统的更多相关文章

  1. Django 13 admin和auth系统、权限问题

    一.auth系统 auth系统的数据表 #User:User是auth模块中维护用户信息的关系模式(继承了models.Model), 数据库中该表被命名为auth_user. #Group:User ...

  2. Django学习之九: auth 认证组件

    目录 Django auth 认证组件 配置使用auth组件及其中间件 request.user 可以直接在template模版中使用 auth组件常用api 获取认证model类 认证检测装饰器@l ...

  3. Django学习之 - 基础路由系统

    路由系统:URL 1:一个URL对应一个类或函数: url(r'^register',reg.register) 函数写法 url(r'^cbv',reg.cbv.as_view()) 类写法 2:通 ...

  4. Django学习系列之模板系统

    一.模板标签 if/else {%  if  %}标签检查一个变量的值是否为真或者等于另外一个值,如果为真,系统会执行{%  if  %}和{%  endif  %}之间的代码块,例如: {% if ...

  5. Django学习系列之路由系统

    一.基于App的路由 作用: 根据App对路由规则进行分类,在全局urls.py包含某个项目的urls.py 示例 定义全局urls.py(全局路由系统) #导入include from django ...

  6. Django学习笔记(9)—— 开发用户注册与登录系统

    一,项目题目: 开发用户注册与登录系统 该项目主要练习使用Django开发一个用户注册与登录的系统,通过这个项目然后巩固自己这段时间所学习的Django知识. 二,项目需求: 开发一个简单的用户登录与 ...

  7. Django学习笔记(13)——Django的用户认证(Auth)组件,视图层和QuerySet API

    用户认证组件的学习 用户认证是通过取表单数据根数据库对应表存储的值做比对,比对成功就返回一个页面,不成功就重定向到登录页面.我们自己写的话当然也是可以的,只不过多写了几个视图,冗余代码多,当然我们也可 ...

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

    当 DEBUG=True 时,django 内部的404报错信息, 自带的报错信息, 要自定义404信息,要先把 DEBUG=False , 之后要自定义4040页面,有两种方法, 方法1,在创建40 ...

  9. Django——13 Auth系统 登陆注册实例 权限的实现

    Django Auth系统中的表 注册登陆实例 权限的实现 登陆权限 操作权限 组操作  Auth系统中的表 从表的名称我们就能看出,auth_user,auth_group,auth_permiss ...

随机推荐

  1. Confluence 6 影响语言的其他设置

    一个独立的用户可以在 Confluence 中选择应用到界面文字和消息中的语言.请注意,支持的语言类型基于在 Confluence 中安装的语言包. 你登录使用 Confluence 回话的语言基于下 ...

  2. LeetCode(103): 二叉树的锯齿形层次遍历

    Medium! 题目描述: 给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行). 例如:给定二叉树 [3,9,20,null,nul ...

  3. poj2817状态压缩 升维

    /* 两两求出字符串之间最大可以匹配的值 由已知状态推导出位置状态 状态s表示已经加入到集合中的字符串,0表示串i不存在,1存在 由于字符串的加入顺序会影响结果,所以增加一维来表示 dp[S][i]表 ...

  4. c++与java的几个不同点

    Java.C.C++在近两年一直稳居世界编程语言排行榜前三名.Java与c++都是面向对象的语言,但Java晚于C++发布,部分语法和思想也参考了C++,只是Java 没有头文件.指针.运算符重载.虚 ...

  5. ajax请求数据时什么时候用GET,什么时候用POST

    GET的目的就如同其名字一样是用于获取信息的.它旨在显示出页面上你要阅读的信息.浏览器会缓冲GET请求的执行结果,如果同样的GET请求再次发出,浏览器就会显示缓冲的结果而不是重新运行整个请求.重新请求 ...

  6. Python数据类型之字符串

    一:概述 Python中的字符串的一些概念 可以看作是字符的集合,在数据类型里没有单个字符的数据类型,可以用单个字符表示的一个字符串数据类型 字符串是一种不可变的序列类型,单个字符从左到右按照顺序排列 ...

  7. Liunx 特殊权限 suid sgid t

    suid 在passwd 中体现,在执行命令的时候普通用户拥有管理员的权限 [root@test_android_client_download ~]# ll /usr/bin/passwd -rws ...

  8. .Net(C#)用正则表达式清除HTML标签(包括script和style),保留纯本文(UEdit中编写的内容上传到数据库)

    去官网下载,本Demo用的MVC模式 下载地址:http://ueditor.baidu.com/website/download.html 加入文件夹中的结构: 引入了函数公式的图标: @{ Vie ...

  9. Redis都有哪些数据类型

    string 这是最基本的类型了,就是普通的set和get,做简单的kv缓存 hash 这个是类似map的一种结构,这个一般就是可以将结构化的数据,比如一个对象(前提是这个对象没嵌套其他的对象)给缓存 ...

  10. Git和Github入门教程

    一.常用命令 所有命令前都要加 git,如表中的init是指 git init.点击命令可直接跳转至本文第一次使用的地方.以下命令都在命令行里执行. 1.本地命令 行为 命令 备注 初始化 init ...