1. 程式人生 > >DRF之頻率元件

DRF之頻率元件

幾種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"  # 對應繼承類
                    }
                }