rest_framework 之分页器】的更多相关文章

一  分页器--准备 1.1  基本参数 # 普通分页 from rest_framework.pagination import PageNumberPagination # 偏移分页 from rest_framework.pagination import LimitOffsetPagination # 加密分页 from rest_framework.pagination import CursorPagination class MyPageNumberPagination(PageN…
Django rest_framework 之分页器使用以及其源码分析 三种分页方式: 常规分页 -->PageNumberPagination 偏移分页 -->LimitOffsetPagination cursor游标方式 -->CursorPagination 1.常规分页方式: 路由 # 路由 url(r'^books/', views.Book.as_view({'get':'get_all'})) # 模块导入 from rest_framework.pagination i…
一.访问频率补充 频率: 自定义: 1 定义一个类MyThrottles allow_request(频率限制的逻辑) ==>这两个函数都是派生出来的,继承的类里面封装的. wait(返回一个数字,给用户提示,还差多少秒) 2 局部使用:throttle_classes=[MyThrottles,] 3 全局使用:'DEFAULT_THROTTLE_CLASSES':['utils.common.MyThrottles',], 用内置的:(可以控制ip,和userid) 1 写一个类,继承Sim…
  from rest_framework.pagination import PageNumberPagination,LimitOffsetPagination,CursorPagination PageNumberPagination # 常用分页,查出所有,取部分 LimitOffsetPagination # 偏移分页,只能向前或者向后基于当前位置查 CursorPagination # 游标分页,一次只能上一页下一页,但效率极高 class PublishView(APIView):…
1. 分页器分为:简单分页器与偏移分页器和加密分页器 2.实现一个简单的分页器的用法: # 简单分页 # 第一步,导入分页类 # from rest_framework.pagination import PageNumberPagination # class MyPageNumberPagination(PageNumberPagination): # page_size=4 # # class BooksView(APIView): # def get(self, request): #…
1  importlib与dir知识 # importlib简介动态导入字符串模块 # 常规导入 from ss.aa import b from ss import a print(b,type(b)) #<module 'ss.aa.b' from 'F:\\python37\\pythonfiles\\ss\\aa\\b.py'> #<class 'module'> # importlib动态导入py文件模块 import importlib mod=importlib.im…
响应式 如果在setting配置下列,当只有BrowsableAPIRenderer时,只会返回浏览器页面:当配置成JSONRenderer,会返回json数据 REST_FRAMEWORK={ 'DEFAULT_RENDERER_CLASSES': ( 'rest_framework.renderers.JSONRenderer', 'rest_framework.renderers.BrowsableAPIRenderer', ), } 分页器 ####分页 from rest_framew…
一.rest-framework之版本控制 1.作用 用于版本的控制 2.内置的版本控制 from rest_framework.versioning import QueryParameterVersioning,AcceptHeaderVersioning,NamespaceVersioning,URLPathVersioning #基于url的get传参方式:QueryParameterVersioning------>如:/versiontest/?version=v1 #基于url的正…
一 REST framwork分页器: from rest_framework.pagination import PageNumberPagination,LimitOffsetPagination class PNPagination(PageNumberPagination): page_size = 1 page_query_param = 'page' page_size_query_param = "size" max_page_size = 5 class BookVie…
认证Authentication 准备工作:(需要结合权限用) 1. 需要使用到登陆功能,所以我们使用django内置admin站点并创建一个管理员. python manage.py createsuperuser 2. 配置  settings.py 1.站点语言配置: # LANGUAGE_CODE = 'en-us' LANGUAGE_CODE = 'zh-hans' # 配置中文 开始认证Authentication 配置文件: (1)可以在配置文件中配置全局默认的认证方案: REST…
rest-framework之分页器 本文目录 一 简单分页(查看第n页,每页显示n条) 二 偏移分页(在第n个位置,向后查看n条数据) 三 CursorPagination(加密分页,只能看上一页和下一页,速度快) 回到目录 一 简单分页(查看第n页,每页显示n条) from rest_framework.pagination import PageNumberPagination # 一 基本使用:url=url=http://127.0.0.1:8000/pager/?page=2&siz…
一.频率组件 1.使用DRF简单频率控制实现对用户进行访问频率控制 1)导入模块,定义频率类并继承SimpleRateThrottle # 导入模块 from rest_framework.throttling import SimpleRateThrottle # 定义频率类并继承SimpleRateThrottle class RateThrottle(SimpleRateThrottle): rate = '5/m' # 指定访问频率,5/m表示 每分钟5次 def get_cache_k…
概要 url注册器 响应器 分页器 url注册器 通过DRF的视图组件,数据接口逻辑被我们优化到最剩下一个类,接下来,我们使用DRF的url控制器来帮助我们自动生成url,使用步骤如下: 第一步:导入模块 from rest_framework import routers 第二步:实例化一个router对象 router = DefaultRouter() 第三步:将需要自动生成url的接口注册到router中 router.register(r'books', views.BookView)…
一.认证组件.权限组件.频率组件总结:  只有认证通过的用户才能访问指定的url地址,比如:查询课程信息,需要登录之后才能查看,没有登录,就不能查看,这时候需要用到认证组件 1.认证组件格式 写一个认证类 from rest_framework.authentication import BaseAuthentication class MyAuth(BaseAuthentication): def authenticate(self,request): # request 是封装后的 toke…
 版本控制: 源码位置分析第一步: 源码位置分析第二步:在APIView-despath方法-initial-determine_version #执行determine_version,返回两个值,放到request对象里 version, scheme = self.determine_version(request, *args, **kwargs) request.version, request.versioning_scheme = version, scheme def deter…
drf分页器 1.第一种分页: 类似于django中的分页 2.第二种分页: 偏移分页 3.第三种分页: 加密分页(查询速度快) 无法跳跃 基本参数 from rest_framework.pagination import PageNumberPagination,LimitOffsetPagination,CursorPagination page_size #每页显示的数量 page_query_param = 'page' #/?page=2 查询的key #指定当前页显示多少条 pag…
一:自定义配置settings文件 1.有两套配置文件,默认配置,用户的配置 2.如果某个字段,用户配置了,就用用户的,如果没配置,就用默认的 二:分页器 1.三种分页: # 普通分页 from rest_framework.pagination import PageNumberPagination # 偏移分页 from rest_framework.pagination import LimitOffsetPagination # 加密分页 from rest_framework.pagi…
一.解析器组件(parser) 1.编程:数据结构和算法的结合 2.restful规范 定义:url唯一定位资源,http请求方式区分用户行为 (1)接口设计规范 (2)返回数据规范 (3)错误消息规范 3.classbasedview原码 4.restframework下的APIView的请求流程和原码 下载:pip install djangorestframework 引入:from rest_framework import APIView APIView的原码: 5.POSTMAN工具…
一.url注册器 通过DRF的视图组件,数据接口逻辑被我们优化到最剩下一个类,接下来,我们使用DRF的url控制器来帮助我们自动生成url,使用步骤如下: 第一步:导入模块 1 from rest_framework import routers 第二步:实例化一个router对象 1 router = routers.DefaultRouter() 第三步:将需要自动生成url的接口注册到router中 1 router.register(r'books', views.BookView) 第…
一.drf 提供的过滤器(ordering) views.py from rest_framework.generics import ListAPIView from . import models, serializers # OrderingFilter排序 from rest_framework.filters import OrderingFilter, class FreeCourseListAPIView(ListAPIView): queryset = models.Course…
频率组件 频率组件类似于权限组件,它判断是否给予请求通过.频率指示临时状态,并用于控制客户端可以向API发出的请求的速率. 与权限一样,可以使用多个调节器.API可能会对未经身份验证的请求进行限制,而对于经过身份验证的请求则进行限制较少. 例如,可以将用户限制为每分钟最多60个请求,每天最多1000个请求. 自定义频率组件 使用方式与权限,认证组件几乎相同 该方式没有DRF提供的方式简洁 import time import math from rest_framework import exc…
一.偏移分页器. 在偏移分页器中,limit代表的是一次性显示的条数,而offset代表的是他基于开头的偏移量. from rest_framework.pagination import LimitOffsetPagination class MyLimitOffsetPagination(LimitOffsetPagination): # ?offset=从头偏移的条数&limit=要显示的条数 limit_query_param = 'limit' offset_query_param =…
一.url注册器的使用 1.1导入模块 from django.urls import re_path, include from .serializer import views from rest_framework import routers 1.2生成一个注册器实例对象 router = routers.DefaultRouter() 1.3将需要自动生成url的接口注册 router.register(r"books", views.BookView) 1.4开始自动生成u…
频率组件 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 = requ…
一.注册器的说明与使用 在我们编写url时经常会因请求方式不同,而重复编写某条url,而rest_framework中的注册器帮我节省了很多代码 下面介绍一下如何使用 # 利用注册器来实现路由分发 from rest_framework import routers # 导入 router = routers.DefaultRouter() # 实例化对象 router.register('book',views.BookView) # 注册 还需要在urlpatterns中加入 re_path…
目录 models 字段补充 choices 参数/字段(用的很多) MTV与MVC模型 科普 Ajax 发送 GET.POST 请求的几种常见方式 用 Ajax 做一个小案例 准备工作 动手用 Ajax 实现效果 contentType 前后端传输数据编码格式 ajax 提交数据 ajax发 json 格式数据 ajax 传文件 序列化组件 利用 sweetalert 搭建页面(弹窗) 弹窗中文支持不太好,手动修改样式 页面数据没刷新的问题 自定义分页器 批量插入测试数据 bulk_creat…
1. 认证Authentication 可以在配置文件中配置全局默认的认证方案 REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework.authentication.SessionAuthentication', # session认证 'rest_framework.authentication.BasicAuthentication', # 基本认证 ) } 也可以在每个视图中通过设置authenticat…
1.认证组件 1.1 认证组件利用token来实现认证 1.2 token认证的大概流程 用户登录===>获取用户名和密码===>查询用户表 如果用户存在,生成token,否则返回错误信息 1.3 示例 补充:自定义的序列化类 BookSerializer.py class BookSerializer(serializers.ModelSerializer): class Meta: model = Book fields = ('title', 'price', 'publish', 'a…
Django REST Framework提供了三种分页器: PageNumberPagination.基于Django Paginator封装,使得操作更方便,只需要做一些配置即可.分页方式:根据页数和每页的大小进行分页. LimitOffsetPagination.分页方式:从第几条开始找,向后找多少条. CursorPagination.实现比较复杂,有自己的特点. 说明:一般在分页前,需要先将数据排序.如果不排序,会报警告 PageNumberPagination utils/pagin…
drf偏移分页组件 pahenations.py from rest_framework.pagination import LimitOffsetPagination class MyLimitOffsetPagination(LimitOffsetPagination): # ?offset=从头偏移的条数&limit=要显示的条数,也可以是 limit_query_param = 'a' #携带参数的时候就是?a=2 limit_query_param = 'limit' offset_q…