2022年 11月 6日

python实现分页

使用python实现分页功能。

        当我们有大量数据需要展示时,需要对数据进行分页展示。这时就用到了分页功能,分页使得数据更好的展示给用户。

        当访问页码数大于总页码数的时候。展示第一页内容

  1. import math
  2. content = [
  3. {"name":"aa","age":17},
  4. {"name":"aa2","age":17},
  5. {"name":"aa3","age":19},
  6. {"name":"aa4","age":16},
  7. {"name":"aa5","age":11},
  8. {"name":"aa6","age":12},
  9. {"name":"aa7","age":13},
  10. {"name":"aa8","age":14}
  11. ]
  12. class Pagination(object):
  13. def __init__(self, data_list, page_index, page_size):
  14. """
  15. 初始化分页数据
  16. :param data_list: 数据列表
  17. :param page_index: 当前要查看的列表页
  18. :param page_size: 每页默认显式几条数据
  19. """
  20. self.data_list = data_list
  21. self.page_index = page_index
  22. self.page_size = page_size
  23. @property
  24. def start(self):
  25. return (self.page_index - 1) * self.page_size
  26. @property
  27. def end(self):
  28. return self.page_index * self.page_size
  29. @property
  30. def page_num(self):
  31. return math.ceil(len(self.data_list) / self.page_size)
  32. def show(self):
  33. """ 切片展示数据 """
  34. result = self.data_list[self.start:self.end]
  35. if result and self.page_index <= self.page_num: # 正常分页
  36. return result, self.page_index
  37. else:
  38. self.page_index = 1
  39. result = self.data_list[self.start:self.end]
  40. return result
  41. if __name__ == '__main__':
  42. p = Pagination(content, page_index=2, page_size=4)
  43. content, page_index = p.show()
  44. print(content)
  45. print(page_index)