原理:分页的底层原理就是利用了sql命令中的limit关键字,通过sql语句查询数据。
构建分页器
# paginator.py
from utils.database import MySQL
class Paginator:
"""
分页器
"""
def __init__(self, total=0, current_page=1, page_size=1):
self.total = int(total)
self.current_page = int(current_page)
self.page_size = int(page_size)
if self.page_size <= 0 or self.current_page <= 0:
self.page_size = 1
self.current_page = 1
def page_num(self):
if self.total % self.page_size == 0:
return self.total // self.page_size
else:
return self.total // self.page_size + 1
def get_data(self, sql):
_limit = (self.current_page - 1) * self.page_size
_offset = self.page_size
sql += f" limit {_limit},{_offset}"
db = MySQL()
return db.get_all(sql)
flask中使用分页器
@course.route('/test/', methods=['GET'])
def get_course():
current_page = request.args.get("current_page", 1)
page_size = request.args.get("page_size", 1)
db = MySQL()
sql = "select count(1) as total from `course`"
result = db.get_one(sql)
# 实例化对象
p = Paginator(result['total'], current_page, page_size)
# 获取多少页
page_num = p.page_num()
# 获取数据
sql = "select * from `course` order by `id` desc"
result = p.get_data(sql)
return {"code": 200, "page_num": page_num, "data": result}
vue中使用分页器
课程编号 课程标题 操作 {{item.id}} {{item.title}} 删除课程 编辑课程 一共有{{ page_num }}页 , 当前页:{{ current_page }}
- 上一页
- {{index}}
- 下一页
感谢观看!



