首页 > 其他 > 详细

0023 基于DRF框架开发(分页Pagination)

时间:2020-02-29 17:20:22      阅读:103      评论:0      收藏:0      [点我收藏+]

  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方法,先测试全局分页,再测试自定义分页。效果如下:

技术分享图片

 

0023 基于DRF框架开发(分页Pagination)

原文:https://www.cnblogs.com/dorian/p/12383521.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!