9-1 分页-DRF分页

目录:

  • 分页介绍
  • 普通分页
  • 切割分页
  • 加密分页

一、分页介绍

当对于数据量的大的时候,我们在一个页面显示不下,这个时候我们就需要采用分页的操作。

分页方式:

  • 普通分页:看第 n 页,每页显示 m 条数据;
  • 切割分页:在 n 个位置,向后查看 m 条数据;
  • 加密分页:这与普通分页方式相似,不过对 URL 中的请求页码进行 加密。

前提:我们需要在我们的app应用中新建一个 文件,mypagenumberpaginations  然后在我们的settings.py文件中导入:

REST_FRAMEWORK = {
    ....
    #分页
    'DEFAULT_PAGINATION_CLASS': 'app06.mypagenumberpaginations.MyPageNumberPagination'  #app06:app名,mypagenumberpaginations:新建文件名,MyPageNumberPagination:类名
}

目录结构如下:

...
-app06
    -migrations
        ...
    -admin.py
    -apps.py
    -models.py
    -mypagenumberpaginations.py  #新建
    ....
...

二、普通分页

说明:在mypagenumberpaginations.py 新增 MyPageNumberPagination,因为在settings.py全局配置了,所以所有 视图都有效。

from rest_framework.pagination import PageNumberPagination

class MyPageNumberPagination(PageNumberPagination):
    page_size = 2
    max_page_size = 2
    page_size_query_param = 'size'
    page_query_param = 'page'

    '''
    page_query_param:表示url中的页码参数
    page_size_query_param:表示url中每页数量参数
    page_size:表示每页的默认显示数量
    max_page_size:表示每页最大显示数量,做限制使用,避免突然大量的查询数据,数据库崩溃
    '''

效果图:

表示:page=2表示 第2页,size:页数显示的大小为1。因为我们的size显示的为2,所以我们还有一条数据。

三、切割分页

说明:切割方式就是采用offset方式。

from rest_framework.pagination import LimitOffsetPagination

class MyPageNumberPagination(LimitOffsetPagination):
    default_limit = 2
    limit_query_param = 'limit'
    offset_query_param = 'offset'
    max_limit = 5
    
    '''
    default_limit:表示默认每页显示几条数据
    limit_query_param:表示url中本页需要显示数量参数
    offset_query_param:表示从数据库中的第几条数据开始显示参数
    max_limit:表示每页最大显示数量,做限制使用,避免突然大量的查询数据,数据库崩溃
    '''

效果图:

 

四、加密分页

说明:加密分页跟普通分页差不多,只是page采用加密的方式。

from rest_framework.pagination import CursorPagination

class MyPageNumberPagination(CursorPagination):
    cursor_query_param = 'cursor'
    page_size = 1
    ordering = 'id'
    page_size_query_param = 'size'
    max_page_size = 1

    '''
    cursor_query_param:表示url中页码的参数
    page_size_query_param:表示每页显示数据量的参数
    max_page_size:表示每页最大显示数量,做限制使用,避免突然大量的查询数据,数据库崩溃
    ordering:表示返回数据的排序方式
    '''

效果图:

 

posted @ 2020-05-07 11:13  帅丶高高  阅读(258)  评论(0)    收藏  举报