Reputation: 3462
I have a simple Pagination class of the django rest framework:
class StandardResultsSetPagination(PageNumberPagination):
page_size = 100
page_size_query_param = 'page_size'
max_page_size = 1000
# Create your views here.
class ResultSet(generics.ListAPIView):
queryset = Result.objects.all()
serializer_class = ResultSetSerializer
pagination_class = StandardResultsSetPagination
This class currently returns a dict with 'prev'
and 'next'
keys that contains a URL with the next page and prev page. What I would like to achieve is that the 'prev'
and 'next'
return just the page number instead of the whole URL.
How can I achieve this?
Upvotes: 2
Views: 2105
Reputation: 22403
You can override get_next_link
and get_previous_link
of PageNumberPagination
Default is:
def get_next_link(self):
if not self.page.has_next():
return None
url = self.request.build_absolute_uri()
page_number = self.page.next_page_number()
return replace_query_param(url, self.page_query_param, page_number)
def get_previous_link(self):
if not self.page.has_previous():
return None
url = self.request.build_absolute_uri()
page_number = self.page.previous_page_number()
if page_number == 1:
return remove_query_param(url, self.page_query_param)
return replace_query_param(url, self.page_query_param, page_number)
You can override:
class StandardResultsSetPagination(PageNumberPagination):
page_size = 100
page_size_query_param = 'page_size'
max_page_size = 1000
def get_next_link(self):
if not self.page.has_next():
return None
page_number = self.page.next_page_number()
return page_number
def get_previous_link(self):
if not self.page.has_previous():
return None
page_number = self.page.previous_page_number()
return page_number
Upvotes: 5