频率组件

 import time

 from rest_framework.throttling import BaseThrottle,SimpleRateThrottle

 IP_DICT = {}
class Throttling(BaseThrottle): def __init__(self):
self.history = None def allow_request(self, request, view):
ctime = time.time()
remote_addr = request.META.get("REMOTE_ADDR") if remote_addr not in IP_DICT:
IP_DICT[remote_addr] = [ctime]
return True history = IP_DICT[remote_addr]
self.history = history while history and history[-1] < ctime - 60:
history.pop() if len(history) < 3:
history.insert(0, ctime)
return True def wait(self):
ctime = time.time()
return 60 - (ctime - self.history[-1])

在使用的视图类中加入:

throttle_classes = [Throttling]

继承一个简单的频率类
 class SimpleThrottling(SimpleRateThrottle):

     rate = "5/m" #局部配置
# scope = "visit_rate" #全局配置 def get_cache_key(self, request, view):
return self.get_ident(request)

  全局配置

 REST_FRAMEWORK = {
'DEFAULT_THROTTLE_CLASSES': (
"app01.utils.app_throttle.SimpleThrottling",
),
'DEFAULT_THROTTLE_RATES': {
"visit_rate": "5/m"
}
}

  局部配置

 throttle_classes = [SimpleThrottling]

url注册器

 from django.contrib import admin
from django.urls import path,re_path,include from rest_framework import routers from app01 import views router = routers.DefaultRouter()
router.register("books",views.BookView) urlpatterns = [
path('admin/', admin.site.urls), # path('books/', views.BookView.as_view()),
# re_path('books/(?P<pk>\d+)/', views.BookFilterView.as_view()), # path('books/', views.BookView.as_view({
# 'get':'list',
# "post":"create"
# })),
# re_path('books/(?P<pk>\d+)/', views.BookView.as_view({
# "get":"retrieve",
# "put":"update",
# "delete":"destroy"
# })),
re_path("^",include(router.urls)),
path('user/',views.UserView.as_view())
]

响应器

from rest_framework.renderers import JSONRenderer,BrowsableAPIRenderer

renderer_classes = [JSONRenderer] #之支持json格式的渲染,而不支持浏览器的渲染

分页器

 # 自定义一个分页器类
from rest_framework.pagination import PageNumberPagination class MyPagonation(PageNumberPagination):
page_size = 3  全局配置"PAGE_SIZE"
page_query_param = "page"
page_size_query_param = "size"
max_page_size = 5

  局部配置

pagination_class = MyPagonation

  

rest-framework频率组件、url注册器、响应器、分页器的更多相关文章

  1. rest认证组件,权限组件,频率组件,url注册器,响应器组件,分页器组件

    1.认证组件 1.1 认证组件利用token来实现认证 1.2 token认证的大概流程 用户登录===>获取用户名和密码===>查询用户表 如果用户存在,生成token,否则返回错误信息 ...

  2. DRF之注册器响应器分页器

    概要 url注册器 响应器 分页器 url注册器 通过DRF的视图组件,数据接口逻辑被我们优化到最剩下一个类,接下来,我们使用DRF的url控制器来帮助我们自动生成url,使用步骤如下: 第一步:导入 ...

  3. DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件

    DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件   本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...

  4. day91 DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件

    DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件   本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...

  5. DRF(5) - 频率组件、url注册器、响应器、分页器

    一.频率组件 1.使用DRF简单频率控制实现对用户进行访问频率控制 1)导入模块,定义频率类并继承SimpleRateThrottle # 导入模块 from rest_framework.throt ...

  6. Restful 4 -- 认证组件、权限组件、频率组件、url注册器、响应器、分页器

    一.认证组件.权限组件.频率组件总结:  只有认证通过的用户才能访问指定的url地址,比如:查询课程信息,需要登录之后才能查看,没有登录,就不能查看,这时候需要用到认证组件 1.认证组件格式 写一个认 ...

  7. 20.DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件

    一 认证组件 1. 局部认证组件 我们知道,我们不管路由怎么写的,对应的视图类怎么写的,都会走到dispatch方法,进行分发, 在咱们看的APIView类中的dispatch方法的源码中,有个sel ...

  8. day 89 DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件

    DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件   本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...

  9. django url注册器组件, 响应器组件, 分页器组件

    一.url注册器的使用 1.1导入模块 from django.urls import re_path, include from .serializer import views from rest ...

随机推荐

  1. [LeetCode] 412. Fizz Buzz 嘶嘶嗡嗡

    Write a program that outputs the string representation of numbers from 1 to n. But for multiples of ...

  2. 【Sqoop学习之一】Sqoop简介

    环境 sqoop-1.4.6 Sqoop:将关系数据库(oracle.mysql.postgresql等)数据与hadoop数据进行转换的工具. 两个版本:两个版本完全不兼容,sqoop1使用最多:s ...

  3. 【Tools】UltraISO官网最新板+注册码

    官网最新UltraISO 9.7版本安装文件,非注册机,亲测可用,若注册码失效,评论会删除. 土豪赏逼地址: https://download.csdn.net/download/qq_1818716 ...

  4. harbor的安装和简单使用【h】

    安装docker的私有仓库, 利用vmware提供的harbor工具, 参考Docker 私有仓库方案比较与搭建, Harbor安装 -- 企业级Registry仓库 2.2harborProject ...

  5. Theano入门

    由于自己的一个小项目需要Theano部分的开源代码,所以学习一下并记录入门的经典网站. 入门中文博客:https://blog.csdn.net/hjimce/article/details/4680 ...

  6. [08]Go设计模式:代理模式(ProxyPattern)

    目录 proxy 一.简介 二.代码 三.参考资料 proxy 一.简介 代理设计模式是一种结构设计模式.这种模式建议为控制和访问主要对象提供额外的间接层. 在这种模式下,将创建一个新的代理类,该类实 ...

  7. 问题二:appium 搞定权限弹框的一个小办法

    public void permission() { for (int i=0; i <= 10; i++) { if (getPageSource().contains("允许&qu ...

  8. was8.5和aop的问题:JVMVRFY013 违反类装入约束

    一.错误日志:Error 500: javax.servlet.ServletException: java.lang.VerifyError: JVMVRFY013 违反类装入约束 类=org/sp ...

  9. 《游戏引擎构架Game Engine Architecture》略读笔记

    <游戏引擎构架Game Engine Architecture>略读笔记 分析标题作者 分析目录 选取感兴趣的章节阅读 25分钟略读完章节 分析标题作者 此书是一本帮助人入行做游戏的书,也 ...

  10. 【C#】课堂知识点#4

    1.回顾类中基本结构. 成员分为: a.(数据成员) , b.(方法成员) 数据成员: 字段 方法成员:方法,构造函数,属性,索引器,运算符. 属性的作用: 对字段进行访问提供get,set方法. 类 ...