• rest-framework之频率控制


    1、频率简介

    为了控制用户对某个url请求的频率,比如,一分钟以内,只能访问三次;


    2、内置频率类使用

    局部使用

    views.py

    from django.shortcuts import render
    from rest_framework.views import APIView
    from rest_framework.response import Response
    from rest_framework.throttling import SimpleRateThrottle
    
    # Create your views here.
    # 第一步,写一个频率类,继承SimpleRateThrottle
        # 重写get_cache_key, 返回self.get_iden(request)
        # 一定要记住配置一个scop=字符串
    # 第二步:在setting中配置
    class Throttle(SimpleRateThrottle):
        scope = 'lxx'
        def get_cache_key(self, request, view):
            return self.get_ident(request)
    
    
    class Books(APIView):
        throttle_classes = [Throttle]  # 局部使用频率类
        def get(self, request):
            return Response('')


    urls.py

    from django.conf.urls import url
    from django.contrib import admin
    from app01 import views
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^books/', views.Books.as_view()),
    ]


    settings.py设置

    REST_FRAMEWORK = {
        'DEFAULT_THROTTLE_RATES':{
            # key(lxx)是视图中scope定义的,3/m:每分钟只能访问三次;4/h:每小时只能访问四次
            'lxx':'3/m'
        }
    }


    测试一分钟超过三次:

    image


    全局使用

    settings.py设置

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


    局部禁用

    在视图类中:

    class Books(APIView):
        throttle_classes = []  # 局部禁用
        def get(self, request):
            return Response('')


    3、内置频率限制类一览

    image

    BaseThrottle是所有类的基类:方法:def get_ident(self, request)获取标识,其实就是获取ip,自定义的需要继承它
    
    AnonRateThrottle:未登录用户ip限制,需要配合auth模块用
    
    SimpleRateThrottle:重写此方法,可以实现频率现在,不需要咱们手写上面自定义的逻辑
    
    UserRateThrottle:登录用户频率限制,这个得配合auth模块来用
    
    ScopedRateThrottle:应用在局部视图上的(忽略)






  • 相关阅读:
    H264学习第一篇(编码结构分析)
    mybatis.xml文件中#与$符号的区别以及数学符号的处理
    mybatis批量插入返回主键问题
    mybais整合的框架没有sql-debug输出
    jQuery选择器方式-用的不多的name选择器
    css样式增加&改变颜色
    jstl-vaStatus 属性count与index
    highchart导出功能的介绍更改exporting源码
    bootstrap-validator验证问题总结
    bootstrap-table 加载不了数据问题总结
  • 原文地址:https://www.cnblogs.com/weiyiming007/p/12521452.html
Copyright © 2020-2023  润新知