diff --git a/rest_framework/generics.py b/rest_framework/generics.py index 7fc9db364..96dd892b0 100644 --- a/rest_framework/generics.py +++ b/rest_framework/generics.py @@ -133,6 +133,17 @@ class GenericAPIView(views.APIView): # Determine the required page size. # If pagination is not configured, simply return None. page_size = self.get_paginate_by() + if page_size == 0: + from django.core.paginator import Page + class Paginator(): + def __init__(self, queryset): + self.count = queryset.count() + self.num_pages = 0 + def validate_number(self, number): + return number + paginator = Paginator(queryset) + return Page(None, 0, paginator) + if not page_size: return None @@ -218,6 +229,9 @@ class GenericAPIView(views.APIView): if self.paginate_by_param: try: + if self.request.QUERY_PARAMS[self.paginate_by_param] == '0': + return 0 + return strict_positive_int( self.request.QUERY_PARAMS[self.paginate_by_param], cutoff=self.max_paginate_by