You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
762 B
28 lines
762 B
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
|
|
|