0

这看起来很简单,但却无法实现。我需要为我的应用程序中的每个 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 帖子。油门默认速率拒绝设置。

非常感谢您的帮助。

4

0 回答 0