python flask实现分页的示例代码


Posted in Python onAugust 02, 2018

结合mysql数据库查询,实现分页效果

@user.route("/user_list",methods=['POST','GET'])
def user_list():
  p = g.args.get("p", '') #页数
  show_shouye_status = 0 #显示首页状态

  if p =='':
    p=1
  else:
    p=int(p)
    if p > 1:
      show_shouye_status = 1

  mdb = db_session()
  limit_start = (int(p)-1)*10#起始

  sql ="select * from page_text limit {0},10".format(limit_start)
  user_list=mdb.getMany(sql)

  sql="select count(id) as total from page_text"
  count = mdb.getOne(sql)['total'] #总记录
  total = int(math.ceil(count/10.0)) #总页数

  dic = get_page(total,p)
  datas={
    'user_list':user_list,
    'p': int(p),
    'total': total,
    'show_shouye_status': show_shouye_status,
    'dic_list': dic

  }
  return render_template("user_list.html",datas=datas)

其中get_page为封装的方法:

def get_page(total,p):
  show_page = 5  # 显示的页码数
  pageoffset = 2 # 偏移量
  start = 1  #分页条开始
  end = total #分页条结束

  if total > show_page:
    if p > pageoffset:
      start = p - pageoffset
      if total > p + pageoffset:
        end = p + pageoffset
      else:
        end = total
    else:
      start = 1
      if total > show_page:
        end = show_page
      else:
        end = total
    if p + pageoffset > total:
      start = start - (p + pageoffset - end)
  #用于模版中循环
  dic = range(start, end + 1)
  return dic

如果这里需要进行前端模板的拼接的话,可以需要以下代码(bootstrap)

<ul class="pagination">
    {% if datas.show_shouye_status==1%}
      <li class=''><a href='/user/user_list?p=1'>首页</a></li>
      <li class=''><a href='/user/user_list?p={{datas.p-1}}'>上一页</a></li>
   {%endif%}

    {% for dic in datas.dic_list %}
      {% if dic==datas.p%}
       <li class="active"><a href="/user/user_list?p={{dic}}" rel="external nofollow" rel="external nofollow" >{{dic}}</a></li>
      {%else%}
        <li><a href="/user/user_list?p={{dic}}" rel="external nofollow" rel="external nofollow" >{{dic}}</a></li>
      {%endif%}
    {%endfor%}

    {% if datas.p < datas.total%}
      <li class=''><a href='/user/user_list?p={{datas.p+1}}'>下一页</a></li>
      <li class=''><a href='/user/user_list?p={{datas.total}}'>尾页</a></li>
    {%endif%}
      共{{datas.total}}页
 </ul>

bootstrap样式 http://edu.3water.com/bootstrap/bootstrap-pagination.html

如果是返回给APP端的话,直接返回data数据就可以了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详解Python中expandtabs()方法的使用
May 18 Python
python实现图片筛选程序
Oct 24 Python
Python学习笔记之图片人脸检测识别实例教程
Mar 06 Python
详解python中递归函数
Apr 16 Python
Python进程间通信Queue消息队列用法分析
May 22 Python
python对文件目录的操作方法实例总结
Jun 24 Python
python删除文件夹下相同文件和无法打开的图片
Jul 16 Python
TensorFlow——Checkpoint为模型添加检查点的实例
Jan 21 Python
Python基于wordcloud及jieba实现中国地图词云图
Jun 09 Python
Python try except finally资源回收的实现
Jan 25 Python
解决pycharm修改代码后第一次运行不生效的问题
Feb 06 Python
Python人工智能之混合高斯模型运动目标检测详解分析
Nov 07 Python
Django分页查询并返回jsons数据(中文乱码解决方法)
Aug 02 #Python
Python实现正整数分解质因数操作示例
Aug 01 #Python
Python列表生成式与生成器操作示例
Aug 01 #Python
Python开发最牛逼的IDE——pycharm
Aug 01 #Python
django从请求到响应的过程深入讲解
Aug 01 #Python
python3.6的venv模块使用详解
Aug 01 #Python
从请求到响应过程中django都做了哪些处理
Aug 01 #Python
You might like
MySQL相关说明
2007/01/15 PHP
phpMyAdmin 链接表的附加功能尚未激活的问题
2010/08/01 PHP
php防止站外远程提交表单的方法
2014/10/20 PHP
php数据访问之增删改查操作
2016/05/09 PHP
Laravel 使用查询构造器配合原生sql语句查询的例子
2019/10/12 PHP
Laravel基础-关于引入公共文件的两种方式
2019/10/18 PHP
jQuery的运行机制和设计理念分析
2011/04/05 Javascript
JavaScript建立一个语法高亮输入框实现思路
2013/02/26 Javascript
JS实现距离上次刷新已过多少秒示例
2014/05/23 Javascript
简述Jquery与DOM对象
2015/07/10 Javascript
JS获取元素多层嵌套思路详解
2016/05/16 Javascript
关于ES6的六个小特性(二)
2017/02/20 Javascript
纯js实现的积木(div层)拖动功能示例
2017/07/19 Javascript
JS实现多物体运动的方法详解
2018/01/23 Javascript
在vue中使用SockJS实现webSocket通信的过程
2018/08/29 Javascript
vue使用showdown并实现代码区域高亮的示例代码
2019/10/17 Javascript
js简单粗暴的发布订阅示例代码
2021/01/23 Javascript
[28:28]Ti4 冒泡赛第二天NEWBEE vs NaVi 2
2014/07/15 DOTA
[01:00:25]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS Liquid
2018/03/31 DOTA
Python def函数的定义、使用及参数传递实现代码
2014/08/10 Python
详解Python Socket网络编程
2016/01/05 Python
Python实现HTTP协议下的文件下载方法总结
2016/04/20 Python
详解python字节码
2018/02/07 Python
vue.js实现输入框输入值内容实时响应变化示例
2018/07/07 Python
通过PYTHON来实现图像分割详解
2019/06/26 Python
python文件选择对话框的操作方法
2019/06/27 Python
Python 模拟生成动态产生验证码图片的方法
2020/02/01 Python
HTML5 解析规则分析
2009/08/14 HTML / CSS
缅甸网上购物:Shop.com.mm
2017/12/05 全球购物
Banana Republic欧盟:美国都市简约风格的代表品牌
2018/05/09 全球购物
西班牙手机之家:Phone House
2018/10/18 全球购物
英国最好的包装供应商:Priory Direct
2019/12/17 全球购物
继承权公证书
2014/04/09 职场文书
运动会的口号
2014/06/09 职场文书
感恩主题班会教案
2015/08/12 职场文书
中秋节英文祝福语句(14句)
2019/09/11 职场文书