网站上的数据都是按页显示的,因此有个功能完善的分页器就显得很重要
class Pager: def __init__(self, data, page_size): self.data = data # 总数据 self.page_size = page_size # 单页大小 self.is_start = False self.is_end = False self.data_count = len(data) self.next_page = 0 # 下一页 self.previous_page = 0 # 上一页 self.page_num = self.data_count / page_size # 总页数 if self.page_num == int(self.page_num): self.page_num = int(self.page_num) else: self.page_num = int(self.page_num) + 1 def page_data(self, page): """ 获取一页的数据 :param page: 要返回数据的页码 :return: 如果页码超过总页码,返回空列表,否则返回一页的数据 """ if page > self.page_num: return [] self.next_page = page + 1 self.previous_page = page - 1 if page == 1: self.is_start = True elif page == self.page_num: self.is_end = True if self.is_end: return self.data[(page - 1) * self.page_size:] else: return self.data[(page - 1) * self.page_size:page * self.page_size]
使用类编写一个分页器,包含以下属性:
-
- self.data:用于分页的数据
- self.page_size:一页数据的大小
- self.is_start:该页是否为起始页
- self.is_end:该页是否为终止页
- self.data_count:总数据的条数
- self.next_page:下一页的页码
- self.previous_page:上一页的页码
- self.page_num:总页数
page_data()方法:用于返回一页的数据,判断页码是否超出页码范围、该页码是否为首页或尾页页码,获取该页的上一页和下一页页码,若超出页码范围,返回空列表,否则返回该页数据