from django.core.paginator import Paginator, InvalidPage DEFAULT_PER_PAGE = 10 DEFAULT_ORPHANS = 5 DEFAULT_PAGE_VAR = 'page' def pagination(request, object_list): paginator = Paginator(object_list, DEFAULT_PER_PAGE, DEFAULT_ORPHANS) try: page_number = int(request.GET.get(DEFAULT_PAGE_VAR) or 1) page_obj = paginator.page(page_number) except (ValueError, InvalidPage) as e: page_obj = paginator.page(page_number) # show first page on error request_GET = request.GET.copy() if DEFAULT_PAGE_VAR in request_GET: del request_GET[DEFAULT_PAGE_VAR] if len(request_GET.keys()) > 0: getvars = '&%s' % request_GET.urlencode() else: getvars = '' return paginator, page_obj, getvars