博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django - - Django REST framework基础:分页
阅读量:7065 次
发布时间:2019-06-28

本文共 2724 字,大约阅读时间需要 9 分钟。

目录

  • 前提
  • 分页,看第n页,每页显示n条数据
  • 分页,在n个位置,向后查看n条数据
  • 加密分页,把上一页和下一页的id值记住

1, 前提

  • rest framework中提供三种分页:
from rest_framework.pagination import PageNumberPagination, LimitOffsetPagination, CursorPagination
  • 全局配置文件:
REST_FRAMEWORK = {    'PAGE_SIZE': 2}

2, 分页,看第n页,每页显示n条数据

  • 例如:

2.1 分页

class MyPageNumber(PageNumberPagination):    page_size = 2  # 每页显示多少条    page_size_query_param = 'size'  # URL中每页显示条数的参数    page_query_param = 'page'  # URL中页码的参数    max_page_size = None  # 最大页码数限制

2.2 视图

class ArticleList(APIView):    def get(self, request, *args, **kwargs):        res = {"code": 0}        article_list = models.Article.objects.all().order_by("id")        # 分页        page_obj = MyPageNumber()        page_article = page_obj.paginate_queryset(queryset=article_list, request=request, view=self)        ser_obj = ArticleSerializer(page_article, many=True)        res["data"] = ser_obj.data        return Response(res)

2.3 返回带页码链接的响应

class ArticleList(APIView):    def get(self, request, *args, **kwargs):        res = {"code": 0}        article_list = models.Article.objects.all().order_by("id")        # 分页        page_obj = MyPageNumber()        page_article = page_obj.paginate_queryset(queryset=article_list, request=request, view=self)        ser_obj = ArticleSerializer(page_article, many=True)        res["data"] = ser_obj.data        return page_obj.get_paginated_response(res)

3, 分页,在n个位置,向后查看n条数据

  • 例如:

3.1 分页

# offset分页class MyLimitOffset(LimitOffsetPagination):    default_limit = 1    limit_query_param = 'limit'    offset_query_param = 'offset'    max_limit = 999

3.2 视图

class ArticleList(APIView):    def get(self, request, *args, **kwargs):        res = {"code": 0}        article_list = models.Article.objects.all().order_by("id")        # 分页        page_obj = MyLimitOffset()        page_article = page_obj.paginate_queryset(queryset=article_list, request=request, view=self)        ser_obj = ArticleSerializer(page_article, many=True)        res["data"] = ser_obj.data        return page_obj.get_paginated_response(res)

4, 加密分页,把上一页和下一页的id值记住

4.1 分页

# 加密分页class MyCursorPagination(CursorPagination):    cursor_query_param = 'cursor'    page_size = 1    ordering = '-id'

4.2 视图

class ArticleList(APIView):    def get(self, request, *args, **kwargs):        res = {"code": 0}        article_list = models.Article.objects.all().order_by("id")        # 分页        page_obj = MyCursorPagination()        page_article = page_obj.paginate_queryset(queryset=article_list, request=request, view=self)        ser_obj = ArticleSerializer(page_article, many=True)        res["data"] = ser_obj.data        # return Response(res)        return page_obj.get_paginated_response(res)
  • 转自

转载于:https://www.cnblogs.com/xiaoqshuo/p/10032231.html

你可能感兴趣的文章
php push key value,php操作redis常见方法示例【key与value操作】
查看>>
php获取函数名字后缀,php 获取文件后缀名,并判断是否合法的函数
查看>>
php 播放程序,PHP音乐播放程序
查看>>
php 删除文件的函数,PHP 删除文件函数是什么
查看>>
php xmp,xmp1和2模式区别有哪些
查看>>
java随机矩阵,Spark-RSVD:Spark大型稀疏矩阵随机奇异值分解库
查看>>
php++简单左侧导航,简单的jquery左侧导航栏和页面选中效果_jquery
查看>>
29岁零基础学php,零基础学PHP,从入门到精通
查看>>
真因数之和编程matlab,真因数
查看>>
php 车牌号,总结关于车牌注意点
查看>>
运动方向估计的管道滤波matlab,基于运动方向估计的管道滤波算法
查看>>
java基础看完,Java基础?看完以后再也不惧怕面试了
查看>>
Java改环境变量把path修改了,win10系统修改JDK版本后配置环境变量不生效
查看>>
java编程cpu选i5还是i7,i5处理器和i7哪个好_i5和i7怎么选择-系统城
查看>>
php字典删除指定元素,完美解决python遍历删除字典里值为空的元素报错问题
查看>>
php strip_tags如何打开,php strip_tags函数怎么用
查看>>
name.php,rewrite_name.php
查看>>
修改php.ini如何生效,修改php.ini不生效
查看>>
oracle新建一个用户命令,oracle 外部用户创建(windows xp)
查看>>
后缀为php但是bin文件夹,PHP试题篇-1
查看>>