DRF提供了分布支持
1 全局分页
DRF全局分页,只需要在配置文件中按以下方式配置就可以了。不需要代码更改。
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 10 # 每页数目
}
2 自定义分页
自定义分布主要是根据不同视图进行不同的分页处理。
在GeneralTools下创建一个Paginations.py文件,专门用于该APP中所有用于自定义分页的类。
from rest_framework.pagination import PageNumberPagination
class SetPageSize5(PageNumberPagination):
page_size = 5
page_size_query_param = 'page_size'
class SetPageSize10(PageNumberPagination):
page_size = 10
page_size_query_param = 'page_size'
class SetPageSize15(PageNumberPagination):
page_size = 15
page_size_query_param = 'page_size'
在视图中用pagination_class来引用上面自定义的类就可以了。代码如下:
from rest_framework import filters
from rest_framework.filters import OrderingFilter
from GeneralTools.Paginations import SetPageSize5
class SchoolViewSet(GenericViewSet, mixins.ListModelMixin, mixins.CreateModelMixin, mixins.UpdateModelMixin,
mixins.RetrieveModelMixin, mixins.DestroyModelMixin):
queryset = Schools.objects.all()
serializer_class = SchoolsSerializer
filter_backends = [OrderingFilter, filters.SearchFilter]
search_fields = ('name',)
ordering_fields = ('teacher_quantity', 'student_quantity', 'employment_rate')
pagination_class = SetPageSize5
3 在接口文档中找到SchoolViewSet接口的list方法,先测试全局分页,再测试自定义分页。效果如下:

浙公网安备 33010602011771号