这看起来很简单,但却无法实现。我需要为我的应用程序中的每个 API 订阅层设置一个节流阀。我创建了一个 throttling.py 文件,它包含油门类。
视图.py
from jet.throttling import BasicRateThrottle, PlatinumRateThrottle
class JetPullViewSet(viewsets.ViewSet):
throttle_classes = [BasicRateThrottle, PlatinumRateThrottle]
permission_classes = [IsAuthenticated]
def list(self, request):
user = self.request.user
queryset = Data.objects.all()
serializer = DataSerializer(queryset, many=True, fields=data_var_fields)
return Response(serializer.data)
节流.py
from rest_framework.throttling import UserRateThrottle
class PlatinumRateThrottle(UserRateThrottle):
scope = 'platinum'
class BasicRateThrottle(UserRateThrottle):
scope = 'basic'
设置.py
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.BasicAuthentication',
'rest_framework.authentication.SessionAuthentication',
],
'DEFAULT_THROTTLE_CLASSES': [
'rest_framework.throttling.UserRateThrottle',
'jet.throttling.PlatinumRateThrottle',
'jet.throttling.BasicRateThrottle',
],
'DEFAULT_THROTTLE_RATES': {
'basic': '5/day',
'platinum': '200/day',
}
}
我收到的错误是:“在/jet/gribpull/未正确配置‘基本’范围没有默认油门速率”
尽管它对我来说似乎定义得很清楚。几天来,我一直在尝试不同的组合,并参考了Django Throttling Docs和无数 SO 帖子。油门默认速率拒绝设置。
非常感谢您的帮助。