欢迎来到Cecilia陈的博客

孤独,是人一生最好的修行。

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]
posted @ 2019-12-03 21:31  Cecilia陈  阅读(190)  评论(0编辑  收藏  举报