aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/generics.py
diff options
context:
space:
mode:
authorTom Christie2013-08-21 21:22:12 +0100
committerTom Christie2013-08-21 21:22:12 +0100
commit2bcad32dcb57ae9419f6a901e081f0dcdc1a6f87 (patch)
tree1438a8796e2aa54bfd5a6d0f3595b450cd95e67b /rest_framework/generics.py
parent4338e1e43fb6725cc89f3390943d9b86880bd678 (diff)
downloaddjango-rest-framework-2bcad32dcb57ae9419f6a901e081f0dcdc1a6f87.tar.bz2
If page size query param <= 0, just use default page size.
Closes #1028.
Diffstat (limited to 'rest_framework/generics.py')
-rw-r--r--rest_framework/generics.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/rest_framework/generics.py b/rest_framework/generics.py
index 99e9782e..5ecf6310 100644
--- a/rest_framework/generics.py
+++ b/rest_framework/generics.py
@@ -14,6 +14,15 @@ from rest_framework.settings import api_settings
import warnings
+def strict_positive_int(integer_string):
+ """
+ Cast a string to a strictly positive integer.
+ """
+ ret = int(integer_string)
+ if ret <= 0:
+ raise ValueError()
+ return ret
+
def get_object_or_404(queryset, **filter_kwargs):
"""
Same as Django's standard shortcut, but make sure to raise 404
@@ -135,7 +144,7 @@ class GenericAPIView(views.APIView):
page_query_param = self.request.QUERY_PARAMS.get(self.page_kwarg)
page = page_kwarg or page_query_param or 1
try:
- page_number = int(page)
+ page_number = strict_positive_int(page)
except ValueError:
if page == 'last':
page_number = paginator.num_pages