DRF之頻率元件
阿新 • • 發佈:2018-12-11
幾種drf的頻率元件使用總結
一
- 定義一個頻率類
class RateThrottle(): def allow_request(request, self): if 沒有超過限制(虛擬碼): return True else: return False def wait(self): # 必寫 return 10
- 指定頻率類
class BookView(APIView): throttle_classes= [RateThrottle]
二 控制使用者訪問頻率 (區域性)
- 匯入
from rest_framework.thortting import SimpleRateThrottle
- 定義並繼承simpleRateThrottle
class RateThrottle(SimpleRateThrottle): # 指定訪問頻率 rate = '5/m' # 指定通過什麼方式來區分使用者 def get_cache_key(self, request, view):return self.get_ident(request)
- 同樣要指定頻率類
class BookView(APIView): throttle_classes = [RateThrottle]
三 控制使用者訪問頻率(全域性)
- 繼承類
class RateThrottle(SimpleRateThrottle): # 指定訪問頻率 scope = 'visit_rate' # 指定通過什麼方式來區分使用者 def get_cache_key(self, request, view):return self.get_ident(request)
- 在settings裡面指定頻率類和訪問頻率
- 在settings裡面指定頻率類和訪問頻率 REST_FRAMEWORK = { "DEFAULT_THROTTLE_CLASSES": ('serializer.utils.app_throttles.RateThrottle',), # 路徑 "DEFAULT_THROTTLE_RATES": { "visit_rate": "5/m" # 對應繼承類 } }