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 ...
随机推荐
- [LeetCode] 412. Fizz Buzz 嘶嘶嗡嗡
Write a program that outputs the string representation of numbers from 1 to n. But for multiples of ...
- 【Sqoop学习之一】Sqoop简介
环境 sqoop-1.4.6 Sqoop:将关系数据库(oracle.mysql.postgresql等)数据与hadoop数据进行转换的工具. 两个版本:两个版本完全不兼容,sqoop1使用最多:s ...
- 【Tools】UltraISO官网最新板+注册码
官网最新UltraISO 9.7版本安装文件,非注册机,亲测可用,若注册码失效,评论会删除. 土豪赏逼地址: https://download.csdn.net/download/qq_1818716 ...
- harbor的安装和简单使用【h】
安装docker的私有仓库, 利用vmware提供的harbor工具, 参考Docker 私有仓库方案比较与搭建, Harbor安装 -- 企业级Registry仓库 2.2harborProject ...
- Theano入门
由于自己的一个小项目需要Theano部分的开源代码,所以学习一下并记录入门的经典网站. 入门中文博客:https://blog.csdn.net/hjimce/article/details/4680 ...
- [08]Go设计模式:代理模式(ProxyPattern)
目录 proxy 一.简介 二.代码 三.参考资料 proxy 一.简介 代理设计模式是一种结构设计模式.这种模式建议为控制和访问主要对象提供额外的间接层. 在这种模式下,将创建一个新的代理类,该类实 ...
- 问题二:appium 搞定权限弹框的一个小办法
public void permission() { for (int i=0; i <= 10; i++) { if (getPageSource().contains("允许&qu ...
- was8.5和aop的问题:JVMVRFY013 违反类装入约束
一.错误日志:Error 500: javax.servlet.ServletException: java.lang.VerifyError: JVMVRFY013 违反类装入约束 类=org/sp ...
- 《游戏引擎构架Game Engine Architecture》略读笔记
<游戏引擎构架Game Engine Architecture>略读笔记 分析标题作者 分析目录 选取感兴趣的章节阅读 25分钟略读完章节 分析标题作者 此书是一本帮助人入行做游戏的书,也 ...
- 【C#】课堂知识点#4
1.回顾类中基本结构. 成员分为: a.(数据成员) , b.(方法成员) 数据成员: 字段 方法成员:方法,构造函数,属性,索引器,运算符. 属性的作用: 对字段进行访问提供get,set方法. 类 ...