1 from django.core.paginator import Paginator
4 def paginate(objects, per_page=None, page_number=1):
6 Given a list of objects, return a (page, obj_list) tuple.
9 per_page = int(per_page)
10 except (TypeError, ValueError):
11 # Then either it wasn't set or it was set to an invalid value
14 # There also shouldn't be pagination if the list is too short. Try count()
15 # first - good chance it's a queryset, where count is more efficient.
17 if objects.count() <= per_page:
19 except AttributeError:
20 if len(objects) <= per_page:
23 paginator = Paginator(objects, per_page)
25 page_number = int(page_number)
29 # This will raise an EmptyPage error if the page number is out of range.
30 # This error is intentionally left for the calling function to handle.
31 page = paginator.page(page_number)
33 return page, page.object_list