diff --git a/rest_framework/pagination.py b/rest_framework/pagination.py index c61794e23..9578eada9 100644 --- a/rest_framework/pagination.py +++ b/rest_framework/pagination.py @@ -198,7 +198,7 @@ class PageNumberPagination(BasePagination): return None paginator = self.django_paginator_class(queryset, page_size) - page_number = self.get_page(request) + page_number = self.get_page_number(request) if page_number in self.last_page_strings: page_number = paginator.num_pages @@ -264,11 +264,9 @@ class PageNumberPagination(BasePagination): return self.page_size - def get_page(self, request): - return _positive_int( - request.query_params.get(self.page_query_param, 1), - strict=True, - ) + def get_page_number(self, request): + # This can be negative to mean 'pages from the end'. + return int(request.query_params.get(self.page_query_param, 1)) def get_next_link(self): if not self.page.has_next():