纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

Django drf分页器 Django drf分页器的使用详解

Silent丿丶黑羽   2021-06-22 我要评论
想了解Django drf分页器的使用详解的相关内容吗Silent丿丶黑羽在本文为您仔细讲解Django drf分页器的相关知识和一些Code实例欢迎阅读和指正我们先划重点:Django,drf分页器,Django,分页器使用下面大家一起来学习吧。

前言

当后台返回的数据过多时我们就要配置分页器比如一页最多只能展示10条等等drf中默认配置了3个分页面

  • PageNumberPagination:基础分页器性能略差
  • LimitOffsetPagination:偏移分页器
  • CursorPagination:游标分页器性能强大

PageNumberPagination

基础分页器PageNumberPagination数据量越大性能越差。

首先我们在app中创建一个pagination.py文件然后自定义一个分页器类继承自PageNumberPagination

from rest_framework.pagination import PageNumberPagination
class MyPageNumberPagination(PageNumberPagination):
    """
    普通分页数据量越大性能越差
    """
    # 默认页面展示的条数
    page_size = 3
    # 前端访问url需要添加 ?page=页码
    page_query_param = 'page'
    # 用户自定义返回的条数格式?page_size=页数
    page_size_query_param = "page_size"
    # 用户自定义返回的条数最大限制数值超过5也只展示5条
    max_page_size = 5

如果我们需要局部配置则在类视图中访问使用pagination_class = MyPageNumberPagination即可
如果是全局配置则在settings.py文件中配置如下:

REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS': 'api.pagination.MyPageNumberPagination',
}

之后我们访问url只需在后面加入?page=页码数即可
比如http://127.0.0.1:8000/api/cars/?page=2代表访问第二页的数据数据的条数默认为page_size的值
比如http://127.0.0.1:8000/api/cars/?page=2&page_size=5代表访问第二页的数据用户自定义返回的条数为5条

LimitOffsetPagination

首先我们自定义一个分页器类继承自LimitOffsetPagination

class MyLimitOffsetPagination(LimitOffsetPagination):
    # url后面跟limit请求参数
    limit_query_param = 'limit'
    # url后面跟offset请求参数
    offset_query_param = 'offset'
    # 最大限制20条
    max_limit = 20
    # 默认限制3条
    default_limit = 3

之后我们访问url只需要在后面加入?limit=10即可
比如http://127.0.0.1/api/cars/?limit=10代表访问的数据最多展示10条如果你limit的值>max_limit那么还是按照max_limit的值来展示数据的条数
比如http://127.0.0.1/api/cars/?offset=1这里没有limit参数所以默认展示3条offset=1代表从数据库列表中提取数据的时候是从下标1开始提取比如提取的数据列表是['test1', 'test2', 'test3', 'test4']本来我们默认提取前3条但是你加上offset=1后他是从列表下标为1开始提取所以最后提取的数据是test2test3test4

CursorPagination

游标分页器跟基础分页器用法差不多只是游标分页的针对下一页数据的url进行了加密
首先我们自定义一个分页器类继承自CursorPagination

class MyCursorPagination(CursorPagination):
    """
    Cursor 光标分页 性能高安全
    """
    page_size = 10
    page_size_query_param = "page_size"
    max_page_size = 20
    ordering = '-price'

如果我们视图中使用了排序过滤filter_backends = [OrderingFilter]那么我们在访问url的时候必须携带参数?ordering=需要排序的字段


相关文章

猜您喜欢

  • RestTemplate未使用线程池 RestTemplate未使用线程池问题的解决办法

    想了解RestTemplate未使用线程池问题的解决办法的相关内容吗zetor_major在本文为您仔细讲解RestTemplate未使用线程池的相关知识和一些Code实例欢迎阅读和指正我们先划重点:RestTemplate未使用线程池,RestTemplate线程池问题下面大家一起来学习吧。..
  • python学生信息管理系统 python学生信息管理系统实现代码

    想了解python学生信息管理系统实现代码的相关内容吗xiaoxaoyu在本文为您仔细讲解python学生信息管理系统的相关知识和一些Code实例欢迎阅读和指正我们先划重点:python学生信息管理系统,python学生管理系统,python信息管理系统下面大家一起来学习吧。..

网友评论

Copyright 2020 www.Shellfishsoft.com 【贝软下载站】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式