From 345fd7df6cb2ef0d0881922f490056349ddc2a25 Mon Sep 17 00:00:00 2001 From: Artem Skoretskiy Date: Fri, 21 Jun 2019 11:58:51 +0200 Subject: [PATCH] Extracted` page_size` logic into `get_page_number` to allow overloading --- rest_framework/pagination.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/rest_framework/pagination.py b/rest_framework/pagination.py index 4d65d080a..3c5dd13aa 100644 --- a/rest_framework/pagination.py +++ b/rest_framework/pagination.py @@ -195,9 +195,7 @@ class PageNumberPagination(BasePagination): return None paginator = self.django_paginator_class(queryset, page_size) - page_number = request.query_params.get(self.page_query_param, 1) - if page_number in self.last_page_strings: - page_number = paginator.num_pages + page_number = self.get_page_number(request, paginator) try: self.page = paginator.page(page_number) @@ -235,6 +233,12 @@ class PageNumberPagination(BasePagination): return self.page_size + def get_page_number(self, request, paginator): + page_number = request.query_params.get(self.page_query_param, 1) + if page_number in self.last_page_strings: + return paginator.num_pages + return page_number + def get_next_link(self): if not self.page.has_next(): return None