32 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""Pagination which includes total pages and current page"""
 | 
						|
from rest_framework import pagination
 | 
						|
from rest_framework.response import Response
 | 
						|
 | 
						|
 | 
						|
class Pagination(pagination.PageNumberPagination):
 | 
						|
    """Pagination which includes total pages and current page"""
 | 
						|
 | 
						|
    page_size_query_param = "page_size"
 | 
						|
 | 
						|
    def get_paginated_response(self, data):
 | 
						|
        previous_page_number = 0
 | 
						|
        if self.page.has_previous():
 | 
						|
            previous_page_number = self.page.previous_page_number()
 | 
						|
        next_page_number = 0
 | 
						|
        if self.page.has_next():
 | 
						|
            next_page_number = self.page.next_page_number()
 | 
						|
        return Response(
 | 
						|
            {
 | 
						|
                "pagination": {
 | 
						|
                    "next": next_page_number,
 | 
						|
                    "previous": previous_page_number,
 | 
						|
                    "count": self.page.paginator.count,
 | 
						|
                    "current": self.page.number,
 | 
						|
                    "total_pages": self.page.paginator.num_pages,
 | 
						|
                    "start_index": self.page.start_index(),
 | 
						|
                    "end_index": self.page.end_index(),
 | 
						|
                },
 | 
						|
                "results": data,
 | 
						|
            }
 | 
						|
        )
 |