1. 主页
  2. DRF实战教程
  3. DRF实战之分页

DRF实战之分页

分页

当对于数据量大的时候,我们就需要采用分页操作。

方式

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

普通分页

新建一个自定义分页类mypagenumberpagination

from rest_framework.pagination import PageNumberPagination


class MyPageNumberPagination(PageNumberPagination):
    page_size = 2
    max_page_size = 5
    page_size_query_param = 'size'
    page_query_param = 'page'
    
    '''
    age_query_param:表示url中的页码参数
		page_size_query_param:表示url中每页数量参数
		page_size:表示每页的默认显示数量
		max_page_size:表示每页最大显示数量,做限制使用,避免突然大量的查询数据,数据库崩溃
    '''

切割分页

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:表示每页最大显示数量,做限制使用,避免突然大量的查询数据,数据库崩溃
    '''

加密分页

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:表示返回数据的排序方式
    '''

配置文件

'DEFAULT_PAGINATION_CLASS': 'app06.mypagenumberpagination.MyPageNumberPagination'

我们要如何帮助您?

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注