DRF筆記四 節流

2021-10-03 11:12:13 字數 3496 閱讀 7474

例如:一分鐘訪問三次

訪問記錄 =

try:

user = request._request.post.get(

'username'

) password = request._request.post.get(

'password'

) obj = models.userinfo.objects.

filter

(username=user, password=password)

.first()if

not obj:

ret[

'code']=

1001

ret[

'msg']=

'使用者名稱密碼錯誤'

# 為登入使用者建立token

token = md5(user)

# 存在就更新token,不存在就建立

models.usertoken.objects.update_or_create(user=obj, defaults=

) ret[

'token'

]= token

except exception as e:

ret[

'code']=

1002

ret[

'msg']=

'請求異常'

return jsonresponse(ret)dispatch() 方法——》initial()方法——》check_throttles()方法,節流限制——》allow_request()方法,如果返回flase,呼叫throttled()丟擲異常;如果返回true,說明未被限制。

basethrottle、******ratethrottle、anonratethrottle、userratethrottle、scopedratethrottle
from rest_framework.throttling import ******ratethrottle

# 繼承******ratethrottle的話,可直接實現上述功能

class

visitthrottles

(******ratethrottle)

: scope =

'luffy'

defget_cache_key

(self, request, view)

:return self.get_ident(request)

# 對普通使用者做限制,一分鐘可以最多訪問10次

# 以使用者id或者使用者名稱(要求使用者名稱唯一)作為key

# class

userthrottles

(******ratethrottle)

: scope =

'luffyuser'

defget_cache_key

(self, request, view)

:return request.user.username

settings.py配置

rest_framework =

}

區域性

# 將自定義的visitthrottles類引入throttle_classes列表中即可

用於使用者登入認證

對匿名使用者做限制,讓其一分鐘只能訪問3次,實現方式以ip作為key

'''authentication_classes =

permission_classes =

# 匿名使用者登入時,一分鐘只能訪問3次

throttle_classes =

[visitthrottles,

]def

post

(self, request,

*args,

**kwargs)

:# self.dispatch()

# 1、去request中獲取ip

# 2、訪問記錄

ret =

try:

user = request._request.post.get(

'username'

) password = request._request.post.get(

'password'

) obj = models.userinfo.objects.

filter

(username=user, password=password)

.first()if

not obj:

ret[

'code']=

1001

ret[

'msg']=

'使用者名稱密碼錯誤'

# 為登入使用者建立token

token = md5(user)

# 存在就更新token,不存在就建立

models.usertoken.objects.update_or_create(user=obj, defaults=

) ret[

'token'

]= token

except exception as e:

ret[

'code']=

1002

ret[

'msg']=

'請求異常'

return jsonresponse(ret)

全域性

rest_framework =

}# 對普通使用者做限制,一分鐘可以最多訪問10次

# 以使用者id或者使用者名稱(要求使用者名稱唯一)作為key

# class

userthrottles

(******ratethrottle)

: scope =

'luffyuser'

defget_cache_key

(self, request, view)

:return request.user.username

ELF 四 節頭表

以32位為例,節頭表通過陣列實現,每個陣列項包含乙個節的資訊。各個節構成了程式頭表中定義的各段的內容。section header.typedef struct elf32 shdr elf標準定義了若干固定名稱的節。這些用於執行大多數目標檔案所需的標準任務。所有名稱都從點開始,以便與使用者或非標準...

機器學習基石第四節筆記

1.首先我們一直說,訓練集,通過訓練資料得出模型。測試集驗證模型的準確率。但是為什麼要這樣做呢?答 數學上有乙個不等式叫做霍夫丁不等式 hoeffding s inequality 這個不等式 當n足夠大的時候,v和u相等的概率很大,意思就是如果我從一大堆資料中,取一部分資料做訓練。如果這個訓練得到...

ObjC第四節 繼承

繼 承 1 繼承 1.1 nsobject,根類,oc建立的類都繼承自根類,位於類層次結構的頂層,沒有父類 1.2 父類的例項變數和方法都可以被隱式的繼承過來成為子類的一部分,子類就可以直接訪問這些例項變數和方法 1.3 alloc和init是繼承自nsobject的方法 1.4 繼承的概念呈單鏈繼...