paginator.py 920 B

12345678910111213141516171819202122232425262728
  1. from django.core.paginator import Paginator
  2. class PostsPaginator(Paginator):
  3. """
  4. Paginator that returns that makes last item on page
  5. repeat as first item on next page.
  6. """
  7. def __init__(self, object_list, per_page, orphans=0, allow_empty_first_page=True):
  8. per_page = int(per_page) - 1
  9. if orphans:
  10. orphans += 1
  11. super(PostsPaginator,
  12. self).__init__(object_list, per_page, orphans, allow_empty_first_page)
  13. def page(self, number):
  14. """
  15. Returns a Page object for the given 1-based page number.
  16. """
  17. number = self.validate_number(number)
  18. bottom = (number - 1) * self.per_page
  19. top = bottom + self.per_page
  20. if top + self.orphans >= self.count:
  21. top = self.count
  22. if top < self.count:
  23. top += 1
  24. return self._get_page(self.object_list[bottom:top], number, self)