Skip to content

Instantly share code, notes, and snippets.

@toxinu
Created September 24, 2020 01:28
Show Gist options
  • Select an option

  • Save toxinu/e720b66f9e4e32ce565a74c5e57e00c7 to your computer and use it in GitHub Desktop.

Select an option

Save toxinu/e720b66f9e4e32ce565a74c5e57e00c7 to your computer and use it in GitHub Desktop.
blog/restless-for-building-python-restful-api
from django.core.paginator import Paginator
class APIPaginatorMixin:
per_page = 25
def get_queryset(self):
raise NotImplementedError()
def wrap_list_response(self, data):
return {
"objects": data,
"per_page": self.paginator.per_page,
"count": self.paginator.count,
"num_page": self.paginator.num_pages,
"page": self.page}
def paginate(self, queryset, per_page=None):
if per_page is None:
per_page = self.per_page
per_page_arg = int(self.request.GET.get('per_page'))
self.paginator = Paginator(queryset, per_page)
self.page = int(self.request.GET.get('page', 1))
def list(self):
qs = self.get_queryset()
self.paginate(qs)
return self.paginator.page(self.page)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment