ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

频率

2021-12-11 15:34:37  阅读:200  来源: 互联网

标签:配置文件 get DEFAULT throttling rest framework 频率


# 在项目配置文件中全局配置
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,
}

标签:配置文件,get,DEFAULT,throttling,rest,framework,频率
来源: https://www.cnblogs.com/landson/p/15675715.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有