可以使用DEFAULT_PAGINATION_CLASS
和PAGE_SIZE
设置键全局设置分页样式。例如,要使用内置的限制/偏移分页,您可以执行以下操作:
REST_FRAMEWORK ={
'DEFAULT_PAGINATION_CLASS':'rest_framework.pagination.LimitOffsetPagination',
'PAGE_SIZE':100
}
请注意,您需要设置分页类和应使用的页面大小。默认情况下,两者都是DEFAULT_PAGINATION_CLASS
和。PAGE_SIZE``None
您还可以使用该pagination_class
属性在单个视图上设置分页类。通常,您会希望在整个 API 中使用相同的分页样式,尽管您可能希望在每次查看的基础上改变分页的各个方面,例如默认或最大页面大小。
如果要修改分页样式的特定方面,则需要覆盖其中一个分页类,并设置要更改的属性。
classLargeResultsSetPagination(PageNumberPagination):
page_size =1000
page_size_query_param ='page_size'
max_page_size =10000
classStandardResultsSetPagination(PageNumberPagination):
page_size =100
page_size_query_param ='page_size'
max_page_size =1000
pagination_class
然后,您可以使用属性将新样式应用于视图:
classBillingRecordsView(generics.ListAPIView):
queryset =Billing.objects.all()
serializer_class =BillingRecordsSerializer
pagination_class =LargeResultsSetPagination
或者使用DEFAULT_PAGINATION_CLASS
设置键全局应用样式。例如:
REST_FRAMEWORK ={
'DEFAULT_PAGINATION_CLASS':'apps.core.pagination.StandardResultsSetPagination'
}
这种分页样式在请求查询参数中接受单个数字页码。
要求 :
GET https://api.example.org/accounts/?page=4
回应 :
HTTP 200 OK
{
"count":1023,
"next":"https://api.example.org/accounts/?page=5",
"previous":"https://api.example.org/accounts/?page=3",
"results":[
…
]
}
from rest_framework.pagination import PageNumberPagination
class PagePagination(PageNumberPagination):
'''
列表自定义分页
'''
# 默认每页显示的个数
page_size = 5
# 可以动态改变每页显示的个数
# 页码参数 http://127.0.0.1:8000/goods/?page=2&page_size=30
page_size_query_param = 'page_size'
# 页码参数
page_query_param = 'page'
# 最多能显示多少页
max_page_size = 20
...
pagination_class =PagePagination