Django REST框架分页的实现代码

  

官方文档(这里)

  

用于分页的模块:分页

  

其他Django框架有内置分页模块,无需额外安装,只需做简单的配置。

  

配置什么呢& # 63;就是告诉Django要用到什么样的分页样式,比如:返回哪些字段,每页的大小,请求参数的名称等等。

  


  

  

1.设置。py文件里做全局的配置
  2.单独为每个需要分页的视图分配自定义分页器。

  

途径1是为所有继承ListViewAPI的接口做默认配置,途径2对单独一个接口做个性化配置。

  

需要注意的是:途径1做了全局的配置,所有继承ListAPIView的接口,默认都会有分页。这会影响到现有接口返回数据的结构。除了这一点,途径1还是相当不错的。

  

我比较喜欢仅使用途径2,我可以自定义了一个通用型的分页器,只为有需要分页的视图分配分页器,也是挺方便的。

  


  

        REST_FRAMEWORK={   #……   “DEFAULT_PAGINATION_CLASS”:“rest_framework.pagination.PageNumberPagination”,   的页大小:100   }   之前      

DEFAULT_PAGINATION_CLASS:默认分页器(BasePagination的子类)。Django提供了3个类型:PageNumberPagination, LimitOffsetPagination CursorPagination。不同类型返回的分页信息不同。也可以是你自定义的分页器。

  

页大小:分页大小。

  

  

这里将示例使用自定义分页器的流程。

  

新建一个段落码。py用于写分页器:

  

我们在段落码。py文件里写一个通用的分页器:
  

        类StandarPagination (PageNumberPagination):   页大?20 #默认每页显示条数配置   page_query_param=耙趁妗?”页数”的请求参数名称,默认是页面   page_size_query_param='页大小#”分页大小”的请求参数名称      #进入父类PageNumberPagination可看响应体返回字段。   # def get_paginated_response(自我、数据):   #返回响应(OrderedDict ([   #(“计数”,self.page.paginator.count),   # (“next”self.get_next_link ()),   #(‘前’,self.get_previous_link ()),   #(“结果”,数据)   #)))         #觉得不适用,那就拷贝出来,重载函数,自己多加几个字段。   #(可通过官方文档或直接调试得知从哪些属性获取正确的值)。   def get_paginated_response(自我、数据):   返回响应(OrderedDict ([   (“计数”,self.page.paginator.count),   (“下一个”,self.get_next_link ()),   ('以前',self.get_previous_link ()),   (“页面”,self.page.number),   (“total_page”, self.page.paginator.num_pages),   (页大小,self.page.paginator.per_page),   (“结果”,数据)   ]))      之前      

(更多的属性介绍请查看文档)

  

为接口分配分页器,为属性pagination_class赋值即可。
  

        从rest_framework。分页进口PageNumberPagination      类MyListAPI (ListAPIView):   queryset=TestModel.objects.filter ()   serializer_class=TestModelSerializer   pagination_class=StandarPagination #新增      之前      

完成!   

假如该接口请求地址是http://api/test/

  

看客户端是如何请求接口的:

  

http://api/test/返回第一页,分页大小是20。

  

http://api/test/& # 63;页面=2,页大?10:返回第二页,分页大小是10。

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

Django REST框架分页的实现代码