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