rest-framework频率组件、url注册器、响应器、分页器
频率组件
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注册器、响应器、分页器的更多相关文章
- rest认证组件,权限组件,频率组件,url注册器,响应器组件,分页器组件
1.认证组件 1.1 认证组件利用token来实现认证 1.2 token认证的大概流程 用户登录===>获取用户名和密码===>查询用户表 如果用户存在,生成token,否则返回错误信息 ...
- DRF之注册器响应器分页器
概要 url注册器 响应器 分页器 url注册器 通过DRF的视图组件,数据接口逻辑被我们优化到最剩下一个类,接下来,我们使用DRF的url控制器来帮助我们自动生成url,使用步骤如下: 第一步:导入 ...
- DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件
DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件 本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...
- day91 DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件
DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件 本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...
- DRF(5) - 频率组件、url注册器、响应器、分页器
一.频率组件 1.使用DRF简单频率控制实现对用户进行访问频率控制 1)导入模块,定义频率类并继承SimpleRateThrottle # 导入模块 from rest_framework.throt ...
- Restful 4 -- 认证组件、权限组件、频率组件、url注册器、响应器、分页器
一.认证组件.权限组件.频率组件总结: 只有认证通过的用户才能访问指定的url地址,比如:查询课程信息,需要登录之后才能查看,没有登录,就不能查看,这时候需要用到认证组件 1.认证组件格式 写一个认 ...
- 20.DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件
一 认证组件 1. 局部认证组件 我们知道,我们不管路由怎么写的,对应的视图类怎么写的,都会走到dispatch方法,进行分发, 在咱们看的APIView类中的dispatch方法的源码中,有个sel ...
- day 89 DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件
DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件 本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...
- django url注册器组件, 响应器组件, 分页器组件
一.url注册器的使用 1.1导入模块 from django.urls import re_path, include from .serializer import views from rest ...
随机推荐
- react前端模版Material-UI.类似于antd/bootstrap
Material-UI Material-UI是一个实现了Google's Material Design设计规范的react组件库,开箱即用,使用它可以快速搭建出赏心悦目的应用界面. 文档 各种模版 ...
- TCP/IP学习笔记17--TCP-- 窗口控制 重发控制 流控制
事业无穷年 -- 韩愈 利用窗口控制提高速度: TCP传输数据是,以一个段为单位(每次发送一个数据包),每发一个段需要一次确认应答,这样就难免存在这样的缺点:包的往返时间越长,通信性能就越低. 为解决 ...
- 解决计算精度问题:BigDecimal
BigDecimal类 BigDecimal所在包:java.math,不可变的.任意精度的有符号十进制数.BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成 ...
- 少儿编程|Scratch编程教程系列合集,总有一款适合你
如果觉得资源不错,友情转发,贵在分享!!! 少儿编程Scratch: 少儿编程Scratch第一讲:Scratch完美的初体验少儿编程Scratch第二讲:奇妙的接球小游戏少儿编程Scratch第三讲 ...
- [洛谷P5340][TJOI2019]大中锋的游乐场
题目大意:有$n(n\leqslant10^4)$个点,$m(m\leqslant10^5)$条边的无向图,每个点有一个属性$A/B$,要求$|cnt_A-cnt_B|\leqslant k(k\le ...
- Docker安装带中文全文搜索插件zhparser的Postgresql数据库
上一篇讲了在已经安装了PG数据库的情况下,安装全文搜索插件zhparser遇到的问题.在一个全新的环境中安装带有全文搜索插件zhparser的PG数据库,可以使用已经做好的Docker镜像,在安装的过 ...
- JPA、Hibernate、Spring data jpa之间的关系,以及和springboot的整合
什么么是JPA? 全称Java Persistence API,可以通过注解或者XML描述[对象-关系表]之间的映射关系,并将实体对象持久化到数据库中. 为我们提供了: 1)ORM映射元数据:JPA支 ...
- Eclipse 安装反编译插件 Eclipse Class Decompiler
Eclipse Class Decompiler在线安装方法 https://blog.csdn.net/tangjinquan1157/article/details/77506015 Eclips ...
- .NET母版实例2(UI页面)
8.<div id="navlist"> <asp:SiteMapDataSource ID="SiteMapDataSource1" ...
- (转)WEB服务器_IIS配置优化指南
原文地址:https://www.cnblogs.com/heyuquan/p/deploy-iis-set-performance-guide.html 通常把站点发布到IIS上运行正常后,很少会去 ...