㈠、定义分页器(创建一个paging_device.py文件 )
class Pager():
"""
flask 分页通过sqlalchemy查询进行分页
offset 偏移,开始查询的位置
limit 单页条数
分页器需要具备的功能:
页码
分页数据
是否第一页
是否最后一页
"""
def __init__(self, data, page_siez):
"""
:param data: 要分页的数据
:param page_sezi: 每页多少条数据
"""
self.data = data # 要分页的数据
self.page_size = page_size # 每页多少条数据
self.is_start = False # 是否第一页
self.is_end = False # 是否最后一页
self.page_count = len(data) # 总共多少条数据
self.next_page = 0 # 下一页
self.previous_page = 0 # 上一页
# 总共多少页
self.page_number = self.page_count/page_size
# 判断是否能被整除,如果能,总页码数就是page_number
if self.page_number == int(self.page_number)
self.page_number = int(self.page_number)
else:
# 判断是否能被整除,如果不能,总页码数就是page_number+1
self.page_number = int(self.page_number)+1
# 页码范围
self.page_range = range(1, slef.page_number+1)
def page_date(self, page):
"""
:param page: 页码
假设:
page_size = 10
第一页 偏移offset从0开始 limit(10)
第二页 偏移offset从10开始 limit(10)
page_size = 10
第一页 start 0 end 10
第二页 start 10 end 20
:return 返回分页数据
"""
self.next_page = int(page) + 1 # 下一页(就是当前页码+1)
self.previous_page = int(page) - 1 # 上一页(就是当前页码-1)
if page <= self.page_range[-1]: # 如果当前页码小等于页码范围
page_start = (page - 1) * self.page_size # 当前页的起始数据为:(页码数-1)* 每页数据量
page_end = page * self.page_size # 当前页的结束数据为:(页码数)* 每页数据量
# data = self.data.offset(page_start).limit(self.page_size)
data = self.data[page_start: page_end] # 当前页的数据为: 总数据[起始位置索引:结束位置索引]
if page == 1: # 如果当前页码数为1
self.is_start = True # 说明它是第一页
else: # 如果当前页码数不为1
self.is_start = False # 说明它不是第一页
if page == self.page_range[-1]: # 如果当前页码数为页码范围的最后一个值
self.is_end = True # 说明它是最后一页
else: # 如果当前页码数不是页码范围的最后一个值
self.is_end = False # 说明它不是最后一页
else: # 如果当前页码不在页码范围内
data = ['没有数据'] # 页面没有数据
return data
*Flask:编写分页器
最新推荐文章于 2023-10-12 09:31:53 发布
㈠、定义分页器(创建一个paging_device.py文件 )class Pager(): """ flask 分页通过sqlalchemy查询进行分页 offset 偏移,开始查询的位置 limit 单页条数 分页器需要具备的功能: 页码 分页数据 是否第一页 是否最后一页 """ def __init__(self, data, page...
摘要由CSDN通过智能技术生成