频率

# 在项目配置文件中全局配置
REST_FRAMEWORK = {
    'DEFAULT_THROTTLE_CLASSES': [
    # 针对匿名用户,限制访问频率
    'rest_framework.throttling.AnonRateThrottle',
    # 针对登录用户
    'rest_framework.throttling.UserRateThrottle',
    ],
    'DEFAULT_THROTTLE_RATES': {
        # 针对匿名用户
        'anon': '5/m',
        # 针对登录用户
        'user': '10/m',
    }

}


# 在视图类中局部配置,
from rest_framework.throttling import AnonRateThrottle,UserRateThrottle
class TestView(APIView):
   ...
    
    # 针对匿名用户和登录用户
    throttle_classes = [AnonRateThrottle,UserRateThrottle]
    
    def get(self,request):
        return Response('测试')
# 在配置文件中
REST_FRAMEWORK = {
    'DEFAULT_THROTTLE_RATES': {
        'anon': '5/m',
        'user': '10/m',
    }

}

根据ip限制用户访问频率

写一个类继承SimpleRateThrottle,重写get_cache_key方法,返回

from rest_framework.throttling import SimpleRateThrottle

class MyThrottle(SimpleRateThrottle):
    scope = 'peng'	# 自定义的名字,配置文件中要和这个一样
	# 以它的返回值作为频率限制的key
    def get_cache_key(self,request,view):
        
        return request.META.get('REMOTE_ADDR')
    
class BookListView(ListAPIView):
    # 局部配置
    throttle_classes = [MyThrottle,]
    queryset = Book.objects.all()
    serializer_class = BookModelSerializer
    
# 在配置文件中
REST_FRAMEWORK ={
    'DEFAULT_THROTTLE_RATES': {
        'peng':'3/m',
    },
    'PAGE_SIZE':2,
}
上一篇:09 - Vue3 UI Framework - Table 组件


下一篇:1-4.请求响应