Python利用flask sqlalchemy实现分页效果
发布时间 - 2026-01-11 02:21:09 点击率:次Flask-sqlalchemy是关于flask一个针对数据库管理的。文中我们采用一个关于员工显示例子。

首先,我们创建SQLALCHEMY对像db。
from flask import Flask, render_template,request from flask_sqlalchemy import SQLAlchemy app = Flask(__name__,static_url_path='') app.debug = True app.secret_key = "faefasdfaf" app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///./db/personal.db' # app的配置,指定数据库路径 app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True app.config['SQLALCHEMY_ECHO'] = True db = SQLAlchemy(app)
然后我们利用db创建员工表:
from datetime import datetime
class Employee(db.Model):
'''员工'''
__tablename__ = 'employee'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50))
gender = db.Column(db.String)
job = db.Column(db.String)
birthday = db.Column(db.DateTime)
idcard = db.Column(db.String)
address = db.Column(db.String)
salary = db.Column(db.String)
release_time = db.Column(db.DateTime)
def __init__(self, name, gender, job, birthday, idcard, address, salary, release_time=None):
self.name = name
self.gender = gender
self.job = job
self.birthday = birthday
self.idcard = idcard
self.address = address
self.salary = salary
self.release_time = release_time if release_time else datetime.now()
def __repr__(self):
return '<员工{},{},{},{}>'.format(self.id, self.name, self.salary, self.address)
表创建好之后,我们可以从表中查询数据了。
from flask import render_template
from flask.views import MethodView
class EmployeeListView(MethodView): # 获取员工信息
def get(self,page=1):
employees = Employee.query.paginate(page,per_page=10)
return render_template('employeelist.html', employees=employees)
以上我们通过查询,查询出员工信息,然后传给前台一个模板。(以上我们采用了flask的蓝图进行了分模块,假设我们把上面这个定义为视图函数为:employee.list)
注:paginate是分页的方法,第一个参数是页码,第二个是每页显示多少条。但是这样得到的结果不是一列表,需要在传到前台的值加一个 .items,下面举例说明。(利用jinja2模板)
{% for item in employees.items %}
如上所示,在利用Jinja2去取值时,需要在后台传过来的值后面,加上.items。
继续上面的分页,这里我们要再次利用jinja2模板来定义一个方法,以实现分页的功能,这个页面名字就叫:helper.html。
{% macro render_page_data(page_data,page_function) %}
<div class="text-center">
<ul class="page_data">
<li><a href="{{ url_for(page_function,page = 1) }}">首页</a></li>
{% if page_data.has_prev %}
<li><a href="{{ url_for(page_function,page = page_data.prev_num) }}">«</a></li>
{% endif %}
{% for page in page_data.iter_pages() %}
{% if page %}
{% if page !=page_data.page %}
<li><a href="{{ url_for(page_function,page = page) }}">{{ page }}</a></li>
{% else %}
<li class="active"><a href="#">{{ page }}</a></li>
{% endif %}
{% endif %}
{% endfor %}
{% if page_data.has_next %}
<li><a href="{{ url_for(page_function,page = page_data.next_num) }}">»</a></li>
{% endif %}
<li><a href="{{ url_for(page_function,page = page_data.pages) }}">末页</a></li>
</ul>
</div>
{% endmacro %}
以上是我们利用jinja2的语法定义了一个分布的方法,这个方法,我们传了二个参数,第一个是后台传过来通过db分页查询出来的数据。第二个是我们查询的数据的方法。
这里需要特别说明一下,分页的数据有几个重要的方法:
- has_next:如果在目前页后至少还有一页的话,返回 True
- has_prev:如果在目前页之前至少还有一页的话,返回 True
- next_num:下一页的页面数
- prev_num:前一页的页面数
通过上面的工作之后,最后就只差一步了,我们需要在我们的模板页通过Jinja2导入我们刚刚定义的方法,也就是在上面我们的employeelist.html中导入。
{% import 'helper.html' as helper %}
导入之后,我们就可以在我们需要的地方调用就可以了。
{{ helper.render_pagination(employees,'employee.list') }}
上面就是我们调用我们之前定义的方法。第一个参数,我们从后台传过来的值,第二个就是后台的那个视图函数。
进行了以上操作后,我们就大功告成了,下面看一下,我们实现了的效果图。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# python
# flask
# sqlalchemy
# 分页
# Python+Flask实现自定义分页的示例代码
# Flask快速实现分页效果示例
# es+flask搜索小项目实现分页+高亮的示例代码
# python flask实现分页的示例代码
# python flask实现分页效果
# Python的Flask框架中实现分页功能的教程
# Flask Paginate实现表格分页的使用示例
# 第一个
# 第二个
# 进行了
# 就可以
# 下一页
# 每页
# 我们可以
# 采用了
# 大功告成
# 有几个
# 所示
# 在上面
# 看一下
# 就叫
# 二个
# 首页
# 末页
# 传了
# 要再
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何挑选最适合建站的高性能VPS主机?
如何注册花生壳免费域名并搭建个人网站?
如何在局域网内绑定自建网站域名?
Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康
如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】
HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】
Laravel如何实现多对多模型关联?(Eloquent教程)
Java遍历集合的三种方式
桂林网站制作公司有哪些,桂林马拉松怎么报名?
如何在云服务器上快速搭建个人网站?
JavaScript如何操作视频_媒体API怎么控制播放
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
如何挑选高效建站主机与优质域名?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理
如何在阿里云服务器自主搭建网站?
PythonWeb开发入门教程_Flask快速构建Web应用
Laravel如何处理表单验证?(Requests代码示例)
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
简历在线制作网站免费版,如何创建个人简历?
如何在IIS中配置站点IP、端口及主机头?
如何在建站主机中优化服务器配置?
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
图册素材网站设计制作软件,图册的导出方式有几种?
Swift开发中switch语句值绑定模式
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
,交易猫的商品怎么发布到网站上去?
打造顶配客厅影院,这份100寸电视推荐名单请查收
实例解析Array和String方法
微信推文制作网站有哪些,怎么做微信推文,急?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
敲碗10年!Mac系列传将迎来「触控与联网」双革新
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
大学网站设计制作软件有哪些,如何将网站制作成自己app?
Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践
如何在阿里云香港服务器快速搭建网站?
黑客如何通过漏洞一步步攻陷网站服务器?
如何在自有机房高效搭建专业网站?
网站制作价目表怎么做,珍爱网婚介费用多少?
如何在建站之星网店版论坛获取技术支持?
Laravel安装步骤详细教程_Laravel环境搭建指南
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
C语言设计一个闪闪的圣诞树
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
Win11关机界面怎么改_Win11自定义关机画面设置【工具】
Java解压缩zip - 解压缩多个文件或文件夹实例
魔毅自助建站系统:模板定制与SEO优化一键生成指南
Laravel如何为API编写文档_Laravel API文档生成与维护方法
Python文件流缓冲机制_IO性能解析【教程】
Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询

