Flask:数据分页功能设计

蓝咒 提交于 2019-12-04 20:31:47

  网站上的数据都是按页显示的,因此有个功能完善的分页器就显得很重要

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()方法:用于返回一页的数据,判断页码是否超出页码范围、该页码是否为首页或尾页页码,获取该页的上一页和下一页页码,若超出页码范围,返回空列表,否则返回该页数据

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!