分页处理

rest-framework查询时候默认是不分页的, 除了手动计算查询的起始位置之外, rest-framework也提供了一些页码的设置功能.

  1. 方式1: 直接在setting里添加配置

在settings中rfw(rest-framework)的所有设置都在REST_FRAMEWORK字典中,(如果不设置将采用rfw的默认设置, 默认设置存放在rest-framework.settings中, 可以在此处查询设置的字段名, 防止拼写错误), 我们修改项目目录下的settings.py

REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS':                                             'rest_framework.pagination.LimitOffsetPagination',
    'PAGE_SIZE': 10  # 这是每页显示的数目
}

完毕
此时通过restframe查询之时, 将以每页十条数据显示. 这种方式及其简单, 但是无法对url的页码参数进行’个性化’定制

  • 方式2: 自定义分页(类):

自定义类需要重写PageNumberPagination, 可以自定义多个参数

from rest_framework.pagination import PageNumberPagination
class StandardResultsSetPagination(PageNumberPagination):
    page_size = 10
    page_size_query_param = 'size'
    page_query_param = 'p'
    max_page_size = 100

重写后只需在类视图中指定即可

class GoodsListView(mixins.ListModelMixin, viewsets.GenericViewSet):
    """
    goods list   
    """
    ...
    pagination_class = StandardResultsSetPagination

此时的url变为:

http://localhost:8000/books/?p=3&page_size=3

你可能感兴趣的:(分页处理)