DRF的权限
权限是什么
大家之前都应该听过权限~那么我们权限到底是做什么用的呢~~
大家都有博客~或者去一些论坛~一定知道管理员这个角色~
比如我们申请博客的时候~一定要向管理员申请~也就是说管理员会有一些特殊的权利~是我们没有的~~
这些对某件事情决策的范围和程度~我们叫做权限~~权限是我们在项目开发中非常常用到的~~
那我们看DRF框架给我们提供的权限组件都有哪些方法~~
权限组件源码
我们之前说过了DRF的版本和认证~也知道了权限和频率跟版本认证都是在initial方法里初始化的~~
其实我们版本,认证,权限,频率控制走的源码流程大致相同~~大家也可以在源码里看到~~
我们的权限类一定要有has_permission方法~否则就会抛出异常~~这也是框架给我提供的钩子~~
我们先看到在rest_framework.permissions这个文件中~存放了框架给我们提供的所有权限的方法~~
我这里就不带着大家详细去看每一个了~大家可以去浏览一下每个权限类~看看每个都是干嘛的~~
这里主要说下BasePermission 这个是我们写权限类继承的一个基础权限类~~~
权限的详细用法
在这里我们一定要清楚一点~我们的Python代码是一行一行执行的~那么执行initial方法初始化这些组件的时候~~
也是有顺序的~~我们的版本在前面~然后是认证,然后是权限~ 最后是频率~~所以大家要清楚~~
我们的权限执行的时候~我们的认证已经执行结束了~~~
前提在model中的UserInfo表中加了一个字段~用户类型的字段~~做好数据迁移~~
class MyPermission(BasePermission): message = "VIP用户才能访问,您的权限不足" def has_permission(self, request, view): """ 自定义权限只有vip用户能访问, 注意我们初始化时候的顺序是认证在权限前面的,所以只要认证通过~ 我们这里就可以通过request.user,拿到我们用户信息 request.auth就能拿到用户对象 """ if request.user and request.auth.type == 2: return True else: return False