Django 学习第十二天——Auth 系统
一、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 系统的更多相关文章
- Django 13 admin和auth系统、权限问题
一.auth系统 auth系统的数据表 #User:User是auth模块中维护用户信息的关系模式(继承了models.Model), 数据库中该表被命名为auth_user. #Group:User ...
- Django学习之九: auth 认证组件
目录 Django auth 认证组件 配置使用auth组件及其中间件 request.user 可以直接在template模版中使用 auth组件常用api 获取认证model类 认证检测装饰器@l ...
- Django学习之 - 基础路由系统
路由系统:URL 1:一个URL对应一个类或函数: url(r'^register',reg.register) 函数写法 url(r'^cbv',reg.cbv.as_view()) 类写法 2:通 ...
- Django学习系列之模板系统
一.模板标签 if/else {% if %}标签检查一个变量的值是否为真或者等于另外一个值,如果为真,系统会执行{% if %}和{% endif %}之间的代码块,例如: {% if ...
- Django学习系列之路由系统
一.基于App的路由 作用: 根据App对路由规则进行分类,在全局urls.py包含某个项目的urls.py 示例 定义全局urls.py(全局路由系统) #导入include from django ...
- Django学习笔记(9)—— 开发用户注册与登录系统
一,项目题目: 开发用户注册与登录系统 该项目主要练习使用Django开发一个用户注册与登录的系统,通过这个项目然后巩固自己这段时间所学习的Django知识. 二,项目需求: 开发一个简单的用户登录与 ...
- Django学习笔记(13)——Django的用户认证(Auth)组件,视图层和QuerySet API
用户认证组件的学习 用户认证是通过取表单数据根数据库对应表存储的值做比对,比对成功就返回一个页面,不成功就重定向到登录页面.我们自己写的话当然也是可以的,只不过多写了几个视图,冗余代码多,当然我们也可 ...
- 潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)
当 DEBUG=True 时,django 内部的404报错信息, 自带的报错信息, 要自定义404信息,要先把 DEBUG=False , 之后要自定义4040页面,有两种方法, 方法1,在创建40 ...
- Django——13 Auth系统 登陆注册实例 权限的实现
Django Auth系统中的表 注册登陆实例 权限的实现 登陆权限 操作权限 组操作 Auth系统中的表 从表的名称我们就能看出,auth_user,auth_group,auth_permiss ...
随机推荐
- Netty沾包和拆包
1.连着发两条,会沾在一起,这就是沾包 2.包尾添加特殊分隔符,接收方通过特殊分隔符切分报文区分,这就是拆包 在ChatServerInit类.ChatClientInit类分别加入以下代码 Byte ...
- mysql之视图,触发器,事务等。。。
一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的 ...
- Metasploit (二)
1.测试一台搭建的主机 msf > db_nmap -n -A 10.140.110.16[*] Nmap: Starting Nmap 7.60 ( https://nmap.org ) at ...
- 在anaconda中安装tensorflow
打开Anaconda Prompt, step1: 输入清华仓库镜像 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/ ...
- Allegro PCB Design GXL (legacy) 设置十字大光标
Allegro PCB Design GXL (legacy) version 16.6-2015 1.菜单:Setup > User Preferences... 2.User Prefere ...
- Java接口自动化测试之HTTPClient学习(四)
pom.xml 文件中dependency <dependencies> <dependency> <groupId>org.testng</groupId ...
- Apache Kafka 概述
kafka教程,完全参照w3school: https://www.w3cschool.cn/apache_kafka/apache_kafka-dac11yot.html 以下是入门学习过程中摘录的 ...
- 006-Python函数
Python函数(def) 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.Python提供了许多内建函数,比如print().但你也可以自己创建函数,这被叫做用户自定义函数.函数能 ...
- SQL Server等待
等待大概分为3类:资源等待.队列等待.外部等待 过滤掉系统相关的等待类型的语句.(查看常用的等待信息) SELECT wait_type , signal_wait_time_ms , wait_ti ...
- AspNetCore MVC + Vue.Js 项目搭建
1.准备 全文重点在于搭建环境,其他相关知识点请百度. VS2017 升级到最新的版本 安装 net core 2.0 安装 npm (npm相关使用请百度或咨询前端小伙伴) 全局安装 webpack ...