在Web应用开发时,分页功能是需要开发的高频功能,采用分页功能可以有效提升页面加载速度,改善用户体验。本文将详细介绍如何在Python Flask框架中结合MySQL数据库以及Flask-Pagination库实现数据分页显示,并提供具体的代码示例。
安装所需库
确保已经安装了Flask、Flask-SQLAlchemy(用于连接MySQL数据库)以及Flask-Pagination:
pip install Flask Flask-SQLAlchemy Flask-Pagination
初始化Flask应用与数据库连接
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_paginate import Pagination
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:password@localhost/dbname'
app.config['SECRET_KEY'] = 'your-secret-key-here'
db = SQLAlchemy(app)
# 创建模型示例,例如:
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), nullable=False)
# 更多字段...
# 初始化数据库(仅初次运行时需要)
db.create_all()
实现分页功能
在某个视图函数中,我们通过查询数据库并结合Pagination类来实现分页显示:
from flask import request
@app.route('/users/')
def list_users():
# 查询所有用户数据(按需添加排序或筛选条件)
users_query = User.query
# 获取当前页码,默认为1
page = request.args.get('page', 1, type=int)
# 设置每页显示的记录数,这里设置为20条
per_page = 20
# 创建Pagination对象
pagination = Pagination(page=page, total=users_query.count(), per_page=per_page)
# 分页查询数据
users = users_query.offset(pagination.offset).limit(pagination.per_page).all()
return render_template('users_list.html', users=users, pagination=pagination)
HTML模板中的分页链接
在users_list.html模板中展示用户列表及分页导航:
User List
{% for user in users %}
{% endfor %}
{{ pagination.links }}
总结
通过以上步骤,我们成功在Flask应用中实现了与MySQL数据库对接的分页功能。Flask-Pagination自动处理了URL参数传递、页码计算及无效页码等问题,使得分页功能的实现既简单又实用。在实际项目中,可以根据需要调整每页显示的记录数、增加排序或筛选功能等。
关注我,手把手带你快速入门Python Web编程!