分页器
作者:互联网
#views.py # 查所有,才需要分页 from rest_framework.generics import ListAPIView # 内置三种分页方式 from rest_framework.pagination import PageNumberPagination,LimitOffsetPagination,CursorPagination ''' PageNumberPagination page_size:每页显示的条数 ''' class MyPageNumberPagination(PageNumberPagination): #http://127.0.0.1:8000/api/books2/?aaa=1&size=6 page_size=3 #每页条数 page_query_param='aaa' #查询第几页的key page_size_query_param='size' # 每一页显示的条数 max_page_size=5 # 每页最大显示条数 # class MyLimitOffsetPagination(LimitOffsetPagination): # default_limit = 3 # 每页条数 # limit_query_param = 'limit' # 往后拿几条 # offset_query_param = 'offset' # 标杆 # max_limit = 5 # 每页最大几条 class MyCursorPagination(CursorPagination): cursor_query_param = 'cursor' # 每一页查询的key page_size = 2 #每页显示的条数 ordering = '-id' #排序字段 # class BookView(ListAPIView): # # queryset = models.Book.objects.all().filter(is_delete=False) # queryset = models.Book.objects.all() # serializer_class = BookModelSerializer # #配置分页 # pagination_class = MyCursorPagination # 如果使用APIView分页 from utils.throttling import MyThrottle class BookView(APIView): # throttle_classes = [MyThrottle,] def get(self,request,*args,**kwargs): book_list=models.Book.objects.all() # 实例化得到一个分页器对象 page_cursor=MyPageNumberPagination() book_list=page_cursor.paginate_queryset(book_list,request,view=self) next_url =page_cursor.get_next_link() pr_url=page_cursor.get_previous_link() # print(next_url) # print(pr_url) book_ser=BookModelSerializer(book_list,many=True) return Response(data=book_ser.data) #settings.py REST_FRAMEWORK={ 'PAGE_SIZE': 2, }
标签:分页,page,cursor,条数,book,class,size 来源: https://www.cnblogs.com/dzs894330350/p/16115100.html