pagination.py 865 B

123456789101112131415161718192021222324252627
  1. # coding:utf-8
  2. from rest_framework.response import Response
  3. from rest_framework.pagination import PageNumberPagination
  4. class CustomPagination(PageNumberPagination):
  5. page_size = 10
  6. max_page_size = 20
  7. page_size_query_param = 'size'
  8. page_query_param = 'page'
  9. def get_paginated_response(self, data):
  10. next = self.page.next_page_number() if self.page.has_next() else 1
  11. previous = self.page.previous_page_number() if self.page.has_previous() else 1
  12. return Response({
  13. 'paging': {
  14. 'next': next,
  15. 'previous': previous,
  16. 'total': self.page.paginator.count,
  17. 'page': self.page.number,
  18. 'page_size': self.page.paginator.per_page,
  19. 'total_page': self.page.paginator.num_pages
  20. },
  21. 'data': data
  22. })