码迷,mamicode.com
首页 > 其他好文 > 详细

drf 分页器组件

时间:2019-12-11 00:49:26      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:发送   delete   let   generic   定义   lte   一个   fse   分页器   

一、使用drf分页器

drf 的GenericAPIView这个视图基类提供了三种分页器:但是这里只列举两个,个人认为,最后一个没什么用

  • PageNumberPagination类 (常用)作用:一页显示的条数

    # url:示例
    http://http://127.0.0.1:8000/books/?page=2
    http://http://127.0.0.1:8000/books/?page=2&page_size=100
  • LimitOffsetPagination类 作用:从offset开始往后显示limit条

    # url:示例
    http://http://127.0.0.1:8000/books/?limit=100
    http://http://127.0.0.1:8000/books/?limit=100&offset=400
  • CursorPagination类 作用:只是将url中做了一层加密,其他的没有不同,但必须和OrderingFilter类排序参数连用

定义分页器类

from rest_framework.pagination import PageNumberPagination, LimitOffsetPagination

class CoursePageNumberPagination(PageNumberPagination):
    # 默认一页条数
    page_size = 2
    # 前端发送的页数关键字名
    page_query_param = 'page'
    # 用户自定义一页条数 关键字名
    page_size_query_param = 'page_size'
    # 用户自定义一页最大控制条数
    max_page_size = 10

class CourseLimitOffsetPagination(LimitOffsetPagination):
    # 默认一页条数
    default_limit = 2
    # 从offset开始往后显示limit条
    limit_query_param = 'limit'
    offset_query_param = 'offset'
    max_limit = 2

使用

# 导入分页器组件
from . import paginations
class FreeCourseListAPIView(ListAPIView):
    queryset = models.Course.objects.filter(is_delete=False, is_show=True).order_by(
        "-orders").all()
    serializer_class = serializers.FreeCourseModelSerializer
    
    # 使用分页器(只能使用一个)
    # pagination_class = paginations.CoursePageNumberPagination
    pagination_class = paginations.CourseLimitOffsetPagination

drf 分页器组件

标签:发送   delete   let   generic   定义   lte   一个   fse   分页器   

原文地址:https://www.cnblogs.com/XuChengNotes/p/12019778.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!