频率组件

 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. react前端模版Material-UI.类似于antd/bootstrap

    Material-UI Material-UI是一个实现了Google's Material Design设计规范的react组件库,开箱即用,使用它可以快速搭建出赏心悦目的应用界面. 文档 各种模版 ...

  2. TCP/IP学习笔记17--TCP-- 窗口控制 重发控制 流控制

    事业无穷年 -- 韩愈 利用窗口控制提高速度: TCP传输数据是,以一个段为单位(每次发送一个数据包),每发一个段需要一次确认应答,这样就难免存在这样的缺点:包的往返时间越长,通信性能就越低. 为解决 ...

  3. 解决计算精度问题:BigDecimal

    BigDecimal类 BigDecimal所在包:java.math,不可变的.任意精度的有符号十进制数.BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成 ...

  4. 少儿编程|Scratch编程教程系列合集,总有一款适合你

    如果觉得资源不错,友情转发,贵在分享!!! 少儿编程Scratch: 少儿编程Scratch第一讲:Scratch完美的初体验少儿编程Scratch第二讲:奇妙的接球小游戏少儿编程Scratch第三讲 ...

  5. [洛谷P5340][TJOI2019]大中锋的游乐场

    题目大意:有$n(n\leqslant10^4)$个点,$m(m\leqslant10^5)$条边的无向图,每个点有一个属性$A/B$,要求$|cnt_A-cnt_B|\leqslant k(k\le ...

  6. Docker安装带中文全文搜索插件zhparser的Postgresql数据库

    上一篇讲了在已经安装了PG数据库的情况下,安装全文搜索插件zhparser遇到的问题.在一个全新的环境中安装带有全文搜索插件zhparser的PG数据库,可以使用已经做好的Docker镜像,在安装的过 ...

  7. JPA、Hibernate、Spring data jpa之间的关系,以及和springboot的整合

    什么么是JPA? 全称Java Persistence API,可以通过注解或者XML描述[对象-关系表]之间的映射关系,并将实体对象持久化到数据库中. 为我们提供了: 1)ORM映射元数据:JPA支 ...

  8. Eclipse 安装反编译插件 Eclipse Class Decompiler

    Eclipse Class Decompiler在线安装方法 https://blog.csdn.net/tangjinquan1157/article/details/77506015 Eclips ...

  9. .NET母版实例2(UI页面)

    8.<div  id="navlist"> <asp:SiteMapDataSource  ID="SiteMapDataSource1"  ...

  10. (转)WEB服务器_IIS配置优化指南

    原文地址:https://www.cnblogs.com/heyuquan/p/deploy-iis-set-performance-guide.html 通常把站点发布到IIS上运行正常后,很少会去 ...