def get_pages(request, queryset, num=10): # all_objects = doc.objects.all() paginator = Paginator(queryset, num) page = request.GET.get('page') try: objects = paginator.page(page) except PageNotAnInteger: objects = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. objects = paginator.page(paginator.num_pages) if paginator.num_pages < 9: paginator.p_display = 0 paginator.p_current = range(1,paginator.num_pages+1) elif objects.number < 5: paginator.p_display = 1 paginator.p_current = range(1,5) if objects.number != 4 else range(1,6) paginator.p_end = range(paginator.num_pages-1, paginator.num_pages+1) elif objects.number > paginator.num_pages -4: paginator.p_display = 2 paginator.p_start = range(1,3) paginator.p_current = \ range(paginator.num_pages -3,paginator.num_pages+1) \ if objects.number != paginator.num_pages -3 else range(paginator.num_pages -4,paginator.num_pages+1) # paginator.p_end = range(paginator.num_pages-1, paginator.num_pages+1) else: paginator.p_display = 3 paginator.p_start = range(1,3) paginator.p_current = \ range(objects.number - 2, objects.number + 3) \ # if objects.number != paginator.num_pages -3 else range(paginator.num_pages -4,paginator.num_pages+1) paginator.p_end = range(paginator.num_pages-1, paginator.num_pages+1) paginator.show_ellipsis1 = objects.number - 2 > 3 paginator.show_ellipsis2 = paginator.num_pages-1 > objects.number + 3 return objects