首先我们来看下我们写的用户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 就解决了。