2015-08-17 57 views
2

http://www.django-rest-framework.org/api-guide/throttling/發現的例子推斷,我增加了以下設置,以我的DRF設置:Django Rest框架沒有找到油門範圍?

REST_FRAMEWORK = { 
'DEFAULT_THROTTLE_CLASSES': (
    'rest_framework.throttling.AnonRateThrottle', 
    'rest_framework.throttling.UserRateThrottle', 
    'project.api.throttles.AppEventRateThrottle', 
), 

'DEFAULT_THROTTLE_RATES': { # 86,400 seconds in a day 
    'app_events': '10000/day', 
    'anon': '10000/day', 
    'user': '10000/day', 
}, 
'DEFAULT_AUTHENTICATION_CLASSES': (
    'rest_framework.authentication.BasicAuthentication', 
    'rest_framework.authentication.TokenAuthentication', 
), 
'EXCEPTION_HANDLER': 'project.api.exception_handler.custom_exception_handler', 
} 

這是一個簡單的AppEventRateThrottle類,位於project.api.throttles

from rest_framework.throttling import AnonRateThrottle 

class AppEventRateThrottle(AnonRateThrottle): 
    scope = 'app_events' 

簡單的基於函數的API我試圖加油門:

from project.api.throttles import AppEventRateThrottle 
@api_view(['POST']) 
@throttle_classes([AppEventRateThrottle]) 
def grouped_event_create(request): 
    return Response("Hello, world!") 

但是,每次我使這個API調用,我得到

File "/usr/local/lib/python3.4/dist-packages/rest_framework/throttling.py", line 94, in get_rate 
raise ImproperlyConfigured(msg) 
django.core.exceptions.ImproperlyConfigured: No default throttle rate set for 'app_events' scope 

似乎無法找到在DEFAULT_THROTTLE_RATES詞典「app_events」鍵,但它明確規定。

回答

0

如何將@throttle_classes([AppEventRateThrottle])更改爲@throttle_classes([AppEventRateThrottle,])

+0

歡迎來到SO。請考慮在此答案中添加更多信息。爲什麼以及如何解決OP的問題? – m00am

+0

@ m00am強壯 - 鍵入數組。 – harrouet

+2

@ user3876538它將是一個有或沒有逗號的列表。逗號僅適用於元組。 – jdotjdot