首页 > 其他分享 >15 Djaong内置权限

15 Djaong内置权限

时间:2023-03-03 14:33:31浏览次数:33  
标签:内置 15 Djaong auth django 视图 contrib 权限 Djanog

Djanog中的权限是通过auth组件来实现的,在Djanog默认注册的app中,auth就是了

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    "app01.apps.App01Config"
]

  

1.用户的创建

方式一:通过命令

python .\manage.py createsuperuser

 

 

 

  

方式二:通过视图函数

auth中有models文件,里面定义了User的模型类,通过继承关系,最终还是继承了Model模型类,里面定义了很多的字段,

 

 

 最后数据库迁移,生成表auth_user

 

 

 

所以我们在视图函数中,可以像操作其他模型类一样,进行数据的增删改查,如下

from django.contrib.auth import models

def add_user(request):
    models.User.objects.create_user(username="victor")
    

  

 

2.权限的生成

当我们在执行python .\manage.py migrate 时,Djanog通过信号的方式,向auth_permissions表中添加权限

首先我们在执行上述命令后,会生成auth_permissions表,同时会有数据

 

 

 这些数据是Django自动生成的,下面我们来看一下源码

 

 

 当auth app被加载的时候,会执行ready函数,这里面会注册migrate命令的信号,关于信号可以在我之前写的信号一篇的查看

 

 

 

 

3.权限的分配

权限的分配,我们可以登录admin之后进行手动的录入,如下

 

 

 我们可以给用户User之间分配权限,User和权限之间是多对多的关系,所以,Djanog还会生成一个auth_user_permissions的表格,如下

 

 

 

当然我们也可以先将权限分配给组,然后将用户划分到组中,所以还有有group表和group_permissions表格,如下

 

 

4.权限的验证

当一个用户,访问没有授权的路由时,就会出现403禁止

观看源码,我们在请求路由的时候,请求会走到对应的视图中,然后在视图中来判断该用户是否有对应的权限,其本质就是去对应的表中查询该用户是否有权限

 

标签:内置,15,Djaong,auth,django,视图,contrib,权限,Djanog
From: https://www.cnblogs.com/victor1234/p/17156111.html

相关文章

  • hdu-1515
    dfs 题意:给你两个字符串,问:第一个字符串按入栈出栈规则,能否达到第二个字符串,输出所有的方法,i表示入栈,o表示出栈。用dfs模拟第一个字符串入栈出栈过程:1.当前字符......
  • hdu-1548
    搜索做着做着成最短路径了。。dij本层可以直接到达的层数距离为1否则为无穷大#include<stdio.h>#include<iostream>#include<math.h>#include<stdlib.h>#includ......
  • 一文吃透 Go 内置 RPC 原理
    hello大家好呀,我是小楼,这是系列文《Go底层原理剖析》的第三篇,依旧分析Http模块。我们今天来看Go内置的RPC。说起RPC大家想到的一般是框架,Go作为编程语言竟然还内置......
  • 【Azure Redis 缓存】Lettuce 连接到Azure Redis服务,出现15分钟Timeout问题
    问题描述在Java应用中,使用Lettuce作为客户端SDK与AzureRedis服务连接,当遇见连接断开后,长达15分钟才会重连。导致应用在长达15分的时间,持续报错Timeout 问题解答这......
  • 谷歌浏览器内置翻译报错:无法翻译此网页
      最近访问一个英文的官方文档时,突然发现谷歌浏览器的内置网页翻译失效了,不管怎么试一直报错无法翻译此网页,后来查询资料发现是因为谷歌之前关闭了谷歌的翻译网页版 tr......
  • docker部署gitlab 15.9
    docker-compose.ymlversion:'3.6'services:web:image:'gitlab/gitlab-ce:15.9.1-ce.0'restart:alwayshostname:'project.example.com'contai......
  • java - for 循环15
    packagecom.demo.test;publicclasscirculate{publicstaticvoidmain(String[]args){System.out.println();f();}publicstat......
  • 【LeetCode二叉树#15】二叉搜索树中的众数(递归中序遍历)
    二叉搜索树中的众数力扣题目链接(opensnewwindow)给定一个有相同值的二叉搜索树(BST),找出BST中的所有众数(出现频率最高的元素)。假定BST有如下定义:结点左子树中所......
  • AtCoder Regular Contest 155
    期末考完复健,补一下一个月前打的ARC当时赛后9秒过D,太痛了,第一次体验这种只能说,幸好当时要打的时候感觉状态不行,就unrated了比赛的状况是:A不知道哪错了;C不会;D博弈DP原......
  • 不写代码,拿百万年薪!ChatGPT提示工程或造就15亿码农大军
    新智元报道编辑:编辑部近日,据称是史上首位的提示工程师接受了《华盛顿邮报》采访,为我们揭秘了这个年薪百万的全新职业。ChatGPT爆火之后,带火了一项「......