【Python web 开发】django rest framwork动态设置权限premission

首先我们来看下我们写的用户usersViewSet

新建用户,获取用户信息详情,修改用户详情,是共用同一个viewset,但是新建用户是不需要 用户token的,获取详情和修还用户信息是需要用户的token的

但是又是共用同一个配置,那怎么办呢? 于是就引进了 动态化配置premisetion

mixins.RetrieveModelMixin 是获取用户详情的 view

获取用户信息 前端是要在请求的url里面带一个user_id 过来的,这个有两种方式
1、用户登录成功在 返回一个
user_id给前端,前端再请求用户信息的时候带着这个id 过来
2、不用前端传递id ,后台重写get_object 方法获取当前请求的user
如何来动态配置premisstion?
我们来看源码
viewsets.GenericViewSet---generics.GenericAPIView---views.APIView  进来 testvirLibsite-packages
est_frameworkviews.py

看源码:get_premisstion()方法 主要是 遍历我们配置的premisstion class ,返回的premisstion class 的一个实例也是对象,可能会有多个,所以返回的是一个数组

那我们就来重写 get_premisstion()方法

action 是与函数名保持一致的,放在self 中,只有viewset 是这样,如果使用api view 就不会这样了

动态配置premisstion 就解决了。

 
 



原文地址:https://www.cnblogs.com/yuanyuan2017/p/10161844.html