rest framework 許可權功能

2022-04-20 19:16:21 字數 2411 閱讀 8193

許可權:

問題:不用檢視不用許可權可以訪問

基本使用

寫上乙個許可權類 建立utils 中 permission.py檔案

class svippermisson(object

): message = "

必須是svip使用者,否則無權訪問

"#頁面無權時報錯提示

def has_permission(self, request, view):

if request.user.user_type != 3

:

return

false

return

true

class

orderview(apiview):

"""訂單相關業務 (只有svip使用者有許可權)

""" #authentication_classes =[firstauthtication, authtication]

permission_classes =[mypermission, ]

def

get(self, request, *args, **kwargs):

self.dispatch

ret =

try:

ret[

'data

'] =order_dict

except exception

ase:

pass

return

jsonresponse(ret)

self.check_permissons(request)

#返回許可權的物件列表 或者說 [許可權類的物件]

for permission in

self.get_permissions():

ifnot permission.has_permisstion(requst, self): #如果ha_permisstion返回true 就不執行該函式 就可以通過許可權認證

self.permission_denied(

request, message = getattr(permission, '

message

', none)

)可以在全域性配置 也可以自己定製

rest_framework =

如果要自定義

可以在class userinfoview(apiview):

"""訂單相關業務(普通使用者)

""" permission_classes = [publicpermission,] #寫完這樣 就不會讀全域性的許可權訪問 也可以為空 如permission_classes=

原始碼流程:

dispatch

initial

permission

內建的許可權

from

rest_framework.permissions import basepermission

class

svippermission(basepermission): #按規範 需要繼承basepermission

message = "

必須是svip才能訪問

"def has_permission(self, request, view):

if request.user.user_type != 3

:

return

false

return

true

梳理:

1.使用

-類: 繼承 basepermission 必須實現 has_permission方法

from

rest_framework.permissions import basepermission

class

svippermission(basepermission): #按規範 需要繼承basepermission

message = "

必須是svip才能訪問

"def has_permission(self, request, view):

if request.user.user_type != 3

:

return

false

return

true

-返回值:

true #有權訪問

false #無權訪問

丟擲異常 一般不做異常丟擲異常

message = "

svip

"區域性:

permission_classes =[mypermission]

全域性:rest_framework =

2.原始碼流程

restframework的許可權

許可權的主要應用比如指定的資料,vip使用者或者付費才能 的,普通使用者不能訪問,我們就可以用許可權元件對其進行限制 許可權的都是發生在認證後面的,所以認證時要返回obj.user,許可權判斷的時候好直接獲取使用者 from rest framework.permissions import bas...

REST framework之許可權元件

例如只用超級使用者才能訪問指定的資料,普通使用者不能訪問,所以就要有許可權元件對其限制 from rest framework.permissions import basepermission class userpermission basepermission message 不是超級使用者,...

學習週報 rest framework

本週學習情況 1.rest framework的學習 2.前後端分離5 2到5 6 下週學習計畫 停止課程內容學習 2.花10學習rest framework基礎的學習 本週完成情況 一 fbv,cbv 繼承 避免重複 1 優先順序從左往右 2 super 1.先在studentsview裡面查詢,...