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