【Python web 開發】django rest framwork動態設定許可權premission
阿新 • • 發佈:2018-12-22
首先我們來看下我們寫的使用者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 進來 testvir\Lib\site-packages\rest_framework\views.py
看原始碼:get_premisstion()方法 主要是 遍歷我們配置的premisstion class ,返回的premisstion class 的一個例項也是物件,可能會有多個,所以返回的是一個數組
那我們就來重寫 get_premisstion()方法
action 是與函式名保持一致的,放在self 中,只有viewset 是這樣,如果使用api view 就不會這樣了
動態配置premisstion 就解決了。