# 限制访问频次
-比如某个接口,一分钟只能访问5次,超过了就得等
-按IP地址 限制
-按用户id 限制
# 频率类的使用步骤
1 写个类,继承:SimpleRateThrottle
2 重写某个方法:get_cache_key
-可以返回ip或用户id
-返回什么,就以什么做频率限制
3 写一个类属性,随意命名一个名
scope = 'lqz'
4 在配置文件中配置:
'DEFAULT_THROTTLE_RATES': {
'lqz': '3/m' # 一分钟访问3次
},
5 全局用
'DEFAULT_THROTTLE_CLASSES': [],
6 局部用
class BookView(APIView):
throttle_classes = [MyThrottle]
频率类
from rest_framework.throttling import SimpleRateThrottleclass MyThrottle(SimpleRateThrottle):scope = 'lqz'def get_cache_key(self, request, view):# 返回客户端ip地址:ip=request.META.get('REMOTE_ADDR')print('客户端的ip是:',ip)return ip
配置文件
REST_FRAMEWORK = {'DEFAULT_AUTHENTICATION_CLASSES': [ #认证类'app01.auth.LoginAuth'],'DEFAULT_PERMISSION_CLASSES': ['app01.permission.AdminPermission' #权限类],'DEFAULT_THROTTLE_RATES': {'lqz': '3/m' #lqz 要和上面的scope 参数的对应。一分钟访问三次}, 'DEFAULT_THROTTLE_CLASSES': [ #频率类],}