码迷,mamicode.com
首页 > 其他好文 > 详细

Django Rest Framework 频率组件

时间:2020-02-22 11:49:17      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:技术   queryset   lin   tin   sel   复制   hid   The   地址   

1.频率组件

在项目应用目录创建ratethrottle_classes.py文件,get_cache_key是必须存在的,它的返回值告诉当前频率控制组件要使用什么方式区分访问者(比如ip地址)

====(局部使用)

技术图片
# 导入模块
from rest_framework.throttling import SimpleRateThrottle

# 定义频率类并继承SimpleRateThrottle
class RateThrottle(SimpleRateThrottle):
    rate = 5/m   # 指定访问频率,5/m表示 每分钟5次

    def get_cache_key(self, request, view):
        return self.get_ident(request)
ratethrottle_classes.py

 

====(全局使用)

ratethrottle_classes.py

 

 

技术图片
#继承SimpleRateThrottle类
from rest_framework.throttling import SimpleRateThrottle
class RateThrottle(SimpleRateThrottle):
    scope = "visit_rate"

    def get_cache_key(self, request, view):
        return self.get_ident(request)
技术图片

settings.py

技术图片
REST_FRAMEWORK = {
    "DEFAULT_THROTTLE_CLASSES": (‘ap.utils.throttles.RateThrottle‘,),
    "DEFAULT_THROTTLE_RATES": {
        "visit_rate": "5/m"
    }
}
技术图片

局部使用===》在views.py需要使用频率的 视图函数中注册频率类

技术图片
from rest_framework.viewsets import ModelViewSet
from .authentication_classes import UserAuth
from .permission_classes import UserPerm
from .ratethrottle_classes import RateThrottle
class BookView(ModelViewSet):
    # 在需要认证的数据接口里面指定认证类
    authentication_classes = [UserAuth]
    # 在需要权限的数据接口里面指定权限类
    permission_classes = [UserPerm]

    # 在需要频率的数据接口里面指定频率类
    throttle_classes = [RateThrottle]
    queryset = models.Book.objects.all()
    serializer_class = BookSerizlizer
views.py

全局使用===》不用注册了

******************************************************************************************************************************************

 

 

Django Rest Framework 频率组件

标签:技术   queryset   lin   tin   sel   复制   hid   The   地址   

原文地址:https://www.cnblogs.com/cou1d/p/12344475.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!