from django.core.paginator import Paginator, EmptyPage
class PaginatorSet:
def __init__(self, limit=30):
self._limit = limit
def get(self, request, query_set):
try:
limit = int(request.GET.get('limit', self._limit))
offset = int(request.GET.get('offset', 1))
except ValueError:
limit = self._limit
offset = 1
query_set_pages = Paginator(query_set, limit, allow_empty_first_page=True)
try:
current_page = query_set_pages.page(offset)
except EmptyPage:
current_page = query_set_pages.page(query_set_pages.num_pages)
return {
'current_page': current_page,
'num_pages': query_set_pages.num_pages
}