详解使用flask_paginate进行分页查询

转载自:https://blog.csdn.net/weixin_44232093/article/details/100017742

参考文档:https://pythonhosted.org/Flask-paginate/

详解使用flask_paginate进行分页查询

由于本人最近在用flask框架开发前后端交互,特此记录使用flask_paginate的用法,现记录如下

1.安装flask_paginate

  • 可以使用pip下载,一键式下载非常简单 pip install flask_paginate
  • 下载后import使用即可

2.flask_paginate相关参数介绍

参数 作用
items 当前页面中的记录信息,也就是分页查出来的数据
query 分页的源查询
page 当前页数
prev_num 上一页的页数
next_num 下一页的页数
has_next 是否有下一页,如果有返回true
has_prev 是否有上一页,如果有返回true
pages 按照每页显示的记录条数得出的总页数
per_page 每页显示的记录条数
total 查询返回的记录总数

3.后台代码示例

from  flask_paginate import Pagination,get_page_parameter
from Config import DBsession, EventRecordDB, draughtFan, wind, and_, StatiscData
import time
import datetime

reload(sys)
sys.setdefaultencoding('utf-8')
eventRecord = Blueprint("eventRecord", __name__)

@eventRecord.route("/eventRecordShow", methods=['GET', 'POST'])
def eventRecordShow():
    userName = session['userName']
    # 分页查询所有的数据  组装数据
    pageSize = 18  # 每页显示的记录条数
    # 获取页码 默认为1 int类型
    page = request.args.get(get_page_parameter(), type=int, default=1) 
    
    start = (page - 1) * pageSize       # limit后第一个参数 每一页开始位置
    end = start + pageSize              # limit后第二个参数 每一页结束位置
    
    total = DBsession.query(EventRecordDB).count()  # 总记录数
    pagination = Pagination(by_version=3, page=page, total=total)	# bootstrap版本 默认为3 
    eventList = DBsession.query(EventRecordDB).slice(start, end)
    # 总页码数量 用来控制分页按钮
    totalPage = total / pageSize if total % pageSize == 0 else (total / pageSize) + 1
    # 封装的分页参数,和页面显示的参数
    pageInfo={"nowPage":page, "pageSize":pageSize, "total":total, "totalPage":totalPage}

    return render_template("eventRecordList.html",username=userName,
    eventList=eventList,pageInfo=pageInfo,pagination=pagination)

4.前端代码

{% for event in eventList  %}  
                    
                        {
    { event.id }}
                        {
    { event.windPowerPlant }}/{
    {event.draughtFanName  }}/{
    { event.subSiteAddress }}号子站/(#{
    { event.subSiteAddress }})
                        {
    { event.startTime }}
                        {
    { event.endTime }}
                        {
    { event.continuousTimeM }}
                        {
    { event.continuousTimeH }}
                        {
    { event.events }}
                    
 {% endfor %}


         
页码: { { pageInfo.nowPage }}/{ { pageInfo.totalPage }} 每页: { { pageInfo.pageSize }} 条记录 共: { { pageInfo.total }} 条记录 {% if pagination.page!=pageInfo.totalPage %} 下一页 {% else %} 下一页 {% endif %} {% if pagination.page!=1 %} 上一页 | {% else %} 上一页 | {% endif %} 转到
{% endblock %}

5.效果图
详解使用flask_paginate进行分页查询_第1张图片
注意

  • 分页参数设置对了,直接循环slice查询出来的对象即可,注意属性名要和数据库的字段名保持一致
  • 在页码处对上下页判断可以用has_next,has_prev进行判断

以上就是flask_paginate的应用,还有好多作用和好多分页形式,有了正确的参数后可以自己设置分页等信息

你可能感兴趣的:(python,python)