• 频率组件


    频率组件

    使用

    ​ 第一步:写一个频率类,继承SimpleRateThrottle,配置一个scop=字符串,重写get_cache_key,返回self.get_ident(request),

    ​ 第二步:在settings中配置

    ​ REST_FRAMEWORK = {

    ​ 'DEFAULT_THROTTLE_RATES': 'l字符串':'限制时间'

    }

    class Throttle(SimpleRateThrottle):
        scope = 'lxx'
        def get_cache_key(self, request, view):
            # return request.META.get('REMOTE_ADDR')
            #返回什么值,就以什么做过滤,返回用户id,就以用户id做过滤
            return self.get_ident(request)  # 这里返回的是ip
    

    局部使用

    在视图类中配置

    class Book(APIView):
        throttle_classes = [MyThrottling,]
        def get(self,request):
            return Response('ok')
    	
        # 报错中文信息,固定写法
            def throttled(self, request, wait):
            from rest_framework.exceptions import Throttled
            class MyThrottled(Throttled):
                default_detail = '访问次数过多'
                extra_detail_singular = '还有 {wait} second.'
                extra_detail_plural = '还剩 {wait} seconds.'
    
            raise MyThrottled(wait)
    

    全局使用

    在settings中配置

    REST_FRAMEWORK={'DEFAULT_THROTTLE_CLASSES':['自己定义的频率类'],}
    

    局部禁用

    throttle_classes=[]
    

    源码分析

    核心代码

    SimpleRateThrottle中的allow_request方法

    获取scope字符串对应的限制频率

    再进行切分拿到各自对应的值

  • 相关阅读:
    SQL查询,点击三维图层,查询属性信息
    title标签的使用
    idea快捷键大全
    intellij idea创建第一个动态web项目
    IDEA设置为黑色背景(今天开始使用idea,并记录点滴,记录坑)
    Eclipse导出Jar包(包含外部包)
    获取当前系统时间
    JS实现的ajax和同源策略
    缓存
    Restful Framework (四)
  • 原文地址:https://www.cnblogs.com/yanminggang/p/11136165.html
Copyright © 2020-2023  润新知