Django:rest framework之分页(Pagination)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django:rest framework之分页(Pagination)相关的知识,希望对你有一定的参考价值。
参考技术A ——视图部分和基于LimitOffsetPagination是样的,只需要把P1改成P2就可以了——视图部分和基于LimitOffsetPagination是样的,只需要把P1改成P3就可以了,而且,页码的也是不是明文,有助于防止恶意一下子请求过多数据。
上一章:Django:rest framework之序列化(Serializer)
REST framwork之分页器,路由器,响应器
一 REST framwork分页器:
from rest_framework.pagination import PageNumberPagination,LimitOffsetPagination class PNPagination(PageNumberPagination): page_size = 1 page_query_param = ‘page‘ page_size_query_param = "size" max_page_size = 5 class BookViewSet(viewsets.ModelViewSet): queryset = Book.objects.all() serializer_class = BookSerializers def list(self,request,*args,**kwargs): book_list=Book.objects.all() pp=LimitOffsetPagination() pager_books=pp.paginate_queryset(queryset=book_list,request=request,view=self) print(pager_books) bs=BookSerializers(pager_books,many=True) #return Response(bs.data) return pp.get_paginated_response(bs.data)
二 路由器:
在view视图中我们已经将代码进行最大化的简化,但是有一个问题就是我们的urls 中不得不进行传参,以区别不同的GET请求,分别为:Retrieve与List
url(r‘^authors/$‘, views.AuthorModelView.as_view({"get": "list", "post": "create"})), url(r‘^authors/(?P<pk>d+)/$‘,views.AuthorModelView.as_view({"get": "retrieve", "put": "update", "delete": "destroy"})),
使用了REST framwork路由器:
三 响应器:
以上是关于Django:rest framework之分页(Pagination)的主要内容,如果未能解决你的问题,请参考以下文章
Django-rest-framework多条件查询/分页/多表Json
关闭 Django Rest Framework ModelViewSet 的自动分页