全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Python利用flask sqlalchemy实现分页效果

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实现表格分页的使用示例  # 第一个  # 第二个  # 进行了  # 就可以  # 下一页  # 每页  # 我们可以  # 采用了  # 大功告成  # 有几个  # 所示  # 在上面  # 看一下  # 就叫  # 二个  # 首页  # 末页  # 传了  # 要再 


相关文章: 合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  在线教育网站制作平台,山西立德教育官网?  如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法  高端建站如何打造兼具美学与转化的品牌官网?  建站中国官网:模板定制+SEO优化+建站流程一站式指南  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  如何挑选优质建站一级代理提升网站排名?  如何制作算命网站,怎么注册算命网站?  建站之星安装模板失败:服务器环境不兼容?  如何彻底卸载建站之星软件?  如何在景安服务器上快速搭建个人网站?  如何注册花生壳免费域名并搭建个人网站?  平台云上自主建站:模板化设计与智能工具打造高效网站  太平洋网站制作公司,网络用语太平洋是什么意思?  魔方云NAT建站如何实现端口转发?  如何规划企业建站流程的关键步骤?  如何撰写建站申请书?关键要点有哪些?  建站之星如何快速解决建站难题?  建站之星代理费用多少?最新价格详情介绍  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  如何通过云梦建站系统实现SEO快速优化?  建站之星3.0如何解决常见操作问题?  如何快速搭建虚拟主机网站?新手必看指南  制作旅游网站html,怎样注册旅游网站?  宝塔建站无法访问?如何排查配置与端口问题?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  如何通过智能用户系统一键生成高效建站方案?  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  如何登录建站主机?访问步骤全解析  西安专业网站制作公司有哪些,陕西省建行官方网站?  网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?  建站之星云端配置指南:模板选择与SEO优化一键生成  如何快速建站并高效导出源代码?  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  如何构建满足综合性能需求的优质建站方案?  北京建设网站制作公司,北京古代建筑博物馆预约官网?  如何快速搭建自助建站会员专属系统?  如何通过多用户协作模板快速搭建高效企业网站?  全景视频制作网站有哪些,全景图怎么做成网页?  智能起名网站制作软件有哪些,制作logo的软件?  如何在局域网内绑定自建网站域名?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  网站制作的方法有哪些,如何将自己制作的网站发布到网上? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。