14 频率组件--throttles
频率模块使用方法
频率模块就是显示规定时间内的访问次数
drf默认的频率配置是空,也就是说,如果需要我们就要自己去实现
- 定义类继承SimpleRateThrottle,重写get_cache_key方法,设置scope类属性
- scope就是一个认证字符串,在配置文件中配置scope字符串对应的频率设置
- get_cache_key的返回值是字符串,该字符串是缓存访问次数的缓存key
自定义实现频率模块
'''throttles.py'''
# 自定义频率类
from rest_framework.throttling import SimpleRateThrottle
# 1)定义类继承SimpleRateThrottle,重写get_cache_key方法,设置scope类属性
# 2)scope就是一个认证字符串,在配置文件中配置scope字符串对应的频率设置
# 3)get_cache_key的返回值是字符串,该字符串是缓存访问次数的缓存key
class ThreeTimeUserThrottle(SimpleRateThrottle):
# 对应的频率设置,会去settings.py中找相应的配置
scope = 'three'
'''
设置属性rate也可以直接进行频率配置
如:rate = "3/min"
'''
# 当前用户缓存的key
def get_cache_key(self, request, view):
return 'throttle:user_%s' % (request.user.id)
全局配置:
# drf的配置
REST_FRAMEWORK = {
# 频率模块的全局配置
'DEFAULT_THROTTLE_RATES': {
# 自定义频率设置
'three': '3/min',
},
}
局部配置:
from rest_framework_jwt import authentication
class UserInfoListAPIView(ListAPIView):
'''频率模块局部配置'''
throttle_classes = [throttles.ThreeTimeUserThrottle]