blob: 47a5e3a6819c684af8428bdfcfba5687dc17cc79 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
from django.core.paginator import Paginator, EmptyPage, InvalidPage
def simple_pagination(request, objects, num_per_page):
paginator = Paginator(objects, num_per_page)
try:
page = int(request.GET.get('page', '1'))
except ValueError:
page = 1
try:
queryset = paginator.page(page)
except (EmptyPage, InvalidPage):
queryset = paginator.page(paginator.num_pages)
if paginator.num_pages > 15:
if page < paginator.num_pages - 13:
firstpage = max(1, page - 7)
lastpage = firstpage + 15
else:
lastpage = min(paginator.num_pages + 1, page + 8)
firstpage = lastpage - 15
page_range = list(range(firstpage, lastpage))
else:
page_range = paginator.page_range
return (queryset, paginator, page_range)
|