17flask分页
一,flask_sqlachemy的使用
如果想要展示出来的页面是分页显示,则首先需要知道每页应该分多少个条目,然后通过数据库去查找对应的条数,同时也需要和分页所需的“paginate”结合使用。
先贴代码:
1 @app.route('/')
2 def index():
3 # 原始代码
4 # context = {
5 # 'questions':Question.query.order_by('create_time').all() #注意all()
6 # }
7 # # print(context)
8 # return render_template('index.html',**context) #**的使用
9 # print(request.args.get('page'))
10
11 #分页代码
12 # print(request.args.get('page',1))
13 page = int(request.args.get('page', 1))
14 per_page = int(request.args.get('per_page', 3))
15 # 上面两行别丢了,不能用下面的下,不然不能知道当前页了。
16 #page = 1
17 #per_page = 3
18
19 paginate = Question.query.order_by(db.desc(Question.create_time)).paginate(page, per_page, error_out=False)
20 #这行代码首先根据“db.desc(Question.create_time)“按照创建时间拍个序号,
21 #然后“.paginate(page, per_page, error_out=False)”就成,没啥特殊操作。
22 questions = paginate.items
23 # 将项目与paginate对应
24
25 question_max_id = Question.query.order_by(db.desc(Question.id)).first().id
26
27 context = {
28 'paginate': paginate,
29 'questions': questions,
30 'question_max_id': question_max_id
31 #这里我加入了一个最大序号,是为了将最新的条目加“new”标记。
32 }
33
34 return render_template('index.html', **context) # **的使用。
原始代码是没有分页的情况。
先看看分页代码中的paginate的用法:
paginate(page, per_page, error_out=True)
page 当前页数
per_page 每页显示的条数
error_out 是否打印错误信息,Flase表页码超出后返回空,否则返回404.
二,jinja2显示
先贴代码
1 {% extends 'base.html' %}
2 {% block title %}首页{% endblock %}
3
4 {% block head %}
5 <meta charset="UTF-8">
6 <link rel="stylesheet" href="{{ url_for('static',filename = "css/index.css") }}">
7 {% endblock %}
8
9 {% block main %}
10 <ul>
11 {% for question in questions %}
12
13 <li>
14 <div class="question-list-group">
15 <img src="{{ url_for('static',filename = "images/dajun1.png")}}" alt="" class="avatar">
16 </div>
17
18 <div class="question-group">
19
20 <p class="question-title">
21 {# <a href="{{ url_for('detail',question_id = question.id) }}">{{ question.title }}</a>#}
22 {# 如果当前的问题id大于==id,则给它一个new标签,否则就按照常规输出#}
23 {% if question.id == question_max_id %}
24 {# <h6>{{ question.title }} <span class="label label-default">New</span></h6>#}
25 <a href="{{ url_for('detail',question_id = question.id) }}">{{ question.title }}</a> <span class="label label-default">New</span>
26 {% else %}
27 <a href="{{ url_for('detail',question_id = question.id) }}">{{ question.title }}</a>
28 {% endif %}
29
30 {# #这里注意下带其他参数的question_id的用法#}
31 </p>
32
33 <p class="question-content" >
34 {# 这里的使得把形如“<p> 打撒</p><p> </p>”这样的文本按照样式显示出来。#}
35 {{ question.content|safe }}
36 </p>
37
38 <div class="question-info">
39 <span class="question-author">
40 <a href="{{ url_for('other_user_info',anwser_name =question.author.username) }}">{{ question.author.username }}</a>
41 </span>
42
43 <span class="question-time">
44 {{ question.create_time }}
45 </span>
46 </div>
47
48 </div>
49 </li>
50
51 {% endfor %}
52
53 {# 当前页数:{{ paginate.page }}#}
54 {# 总页数:{{ paginate.pages }}#}
55 {# 一共有{{ paginate.total }}条数据#}
56 {# <br>#}
57
58 {# {% if paginate.has_prev %}#}
59 {# <a href="?page={{ paginate.prev_num }}">上一页</a>#}
60 {# {% endif %}#}
61 {# 页码:#}
62 {##}
63 {# {% for i in paginate.iter_pages() %}#}
64 {# <a href="?page={{ i }}">{{ i }}</a>#}
65 {# {% endfor %}#}
66 {##}
67 {# {% if paginate.has_next %}#}
68 {# <a href="?page={{ paginate.next_num }}">下一页</a>#}
69 {# {% endif %}#}
70 {# </ul>#}
71
72
73 {#下面是只有前后页的情况#}
74 {#<nav aria-label="...">#}
75 {# <ul class="pager">#}
76 {# <li class="previous"><a href="?page={{ paginate.prev_num }}"><span aria-hidden="true">←</span> 上一页</a></li>#}
77 {# {% if paginate.page ==1 %}#}
78 {# <li class="previous"><a href="#"><span aria-hidden="true">←</span> 上一页</a></li>#}
79 {# {% else %}#}
80 {# <li class="previous"><a href="?page={{ paginate.prev_num }}"><span aria-hidden="true">←</span> 上一页</a></li>#}
81 {# {% endif %}#}
82 {# {% if paginate.page >= paginate.pages %}#}
83 {# <li class="next"><a href=#">下一页 <span aria-hidden="true">→</span></a></li>#}
84 {# {% else %}#}
85 {# <li class="next"><a href="?page={{ paginate.next_num }}">下一页 <span aria-hidden="true">→</span></a></li>#}
86 {# {% endif %}#}
87 {# </ul>#}
88 {#</nav>#}
89
90 {#下面是直接点每一页 加 前后页的情况#}
91 <nav aria-label="...">
92 <ul class="pagination">
93 {# 当前页面为第一页,则把前翻disable#}
94 {% if paginate.page == 1 %}
95 <li class="disable">
96 <span>
97 <span aria-hidden="true">«</span>
98 </span>
99 </li>
100 {% else %}
101 <li class="active">
102 <span>
103 <span aria-hidden="true">«</span>
104 </span>
105 </li>
106 {% endif %}
107
108 {#要用“paginate.iter_pages()”,这里不能用“paginate.pages”(总页数),不然会返回“TypeError: 'int' object is not iterable”#}
109 {% for i in paginate.iter_pages() %}
110 <li class="active">
111 <a href="?page={{ i }}">{{ i }}</a>
112 </li>
113 {% endfor %}
114
115 {# 当前页面为最后一页,则把前翻disable#}
116 {% if paginate.page == paginate.pages %}
117 <li class="disable">
118 <span>
119 <span aria-hidden="true">»</span>
120 </span>
121 </li>
122 {% else %}
123 <li class="active">
124 <span>
125 <span aria-hidden="true">»</span>
126 </span>
127 </li>
128 {% endif %}
129
130 </ul>
131
132 </nav>
133
134 <span class="label label-success"> 当前页数:{{ paginate.page }}</span>
135 <span class="label label-warning">总页数:{{ paginate.pages }}</span>
136 <span class="label label-danger">一共有{{ paginate.total }}条数据</span>
137 {#{{ (paginate.page /paginate.pages)*100}}#}
138 <br>
139 <div class="progress">
140 <div class="progress-bar progress-bar-striped active" role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100" style="width: {{ (paginate.page /paginate.pages)*100}}%">
141 <span class="sr-only">45% Complete</span>
142 </div>
143 </div>
144
145 {# 总页数:{{ paginate.pages }}#}
146 {# 一共有{{ paginate.total }}条数据#}
147
148
149 {% endblock %}
行1:引用模板。
行9--行149是block块。
行10--51显示一中的行29内的内容。
行22--28,把最新的条目加“new”标记。
行73的代码能用,是只有前页和后页的情况。
行93--106当前页面为1,则前翻disable。行116同。
注意:行109中是“for i in paginate.iter_pages()”而非“paginate.pages”,不然会显示“TypeError: 'int' object is not iterable”。
行140是翻页进度条,这是据下载条改的,bootstrap都有。
17flask分页的更多相关文章
- 记一次SQLServer的分页优化兼谈谈使用Row_Number()分页存在的问题
最近有项目反应,在服务器CPU使用较高的时候,我们的事件查询页面非常的慢,查询几条记录竟然要4分钟甚至更长,而且在翻第二页的时候也是要这么多的时间,这肯定是不能接受的,也是让现场用SQLServerP ...
- js实现前端分页页码管理
用JS实现前端分页页码管理,可以很美观的区分页码显示(这也是参考大多数网站的分页页码展示),能够有很好的用户体验,这也是有业务需要就写了一下,还是新手,经验不足,欢迎指出批评! 首先先看效果图: 这是 ...
- JdbcTemplate+PageImpl实现多表分页查询
一.基础实体 @MappedSuperclass public abstract class AbsIdEntity implements Serializable { private static ...
- MVC如何使用开源分页插件shenniu.pager.js
最近比较忙,前期忙公司手机端接口项目,各种开发+调试+发布现在几乎上线无问题了:虽然公司项目忙不过在期间抽空做了两件个人觉得有意义的事情,一者使用aspnetcore开发了个人线上项目(要说线上其实只 ...
- NET Core-TagHelper实现分页标签
这里将要和大家分享的是学习总结使用TagHelper实现分页标签,之前分享过一篇使用HtmlHelper扩展了一个分页写法地址可以点击这里http://www.cnblogs.com/wangrudo ...
- 套用JQuery EasyUI列表显示数据、分页、查询
声明,本博客从csdn搬到cnblogs博客园了,以前的csdn不再更新,朋友们可以到这儿来找我的文章,更多的文章会发表,谢谢关注! 有时候闲的无聊,看到extjs那么肥大,真想把自己的项目改了,最近 ...
- php实现的分页类
php分页类文件: <?php /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 pr ...
- C#关于分页显示
---<PS:本人菜鸟,大手子还请高台贵手> 以下是我今天在做分页时所遇到的一个分页显示问题,使用拼写SQL的方式写的,同类型可参考哦~ ------------------------- ...
- JAVA 分页工具类及其使用
Pager.java package pers.kangxu.datautils.common; import java.io.Serializable; import java.util.List; ...
随机推荐
- html ul li 自定义宽
1. ul里面的样式 2. ul li 里面的样式
- 初始python模块
Python语言中,模块分为三类. 第一类:内置模块,也叫做标准库.此类模块就是python解释器给你提供的,比如我们之前见过的 time模块,os模块.标准库的模块非常多(200多个,每个模块又有很 ...
- 多测师讲解requests __介绍_高级讲师肖sir
我们今天讲解的内容 一.什么是Requests? Requests是用Python语言编写的简单易用的HTTP库,用来做接口测试的库. 二.安装requests库 1.按住Windows标志+r,在运 ...
- JVM 第六篇:极致优化 IDEA 启动速度
本文内容过于硬核,建议有 Java 相关经验人士阅读. 1. 引言 相信做 Java 开发的同学,对 IDEA 这个工具应该都不陌生,即使不使用 IDEA 做开发,那么对 Eclipse 这个工具应该 ...
- MeteoInfoLab脚本示例:AVHRR HDF数据
这里演示读取和绘制AVHRR hdf格式数据,以sst(海表面温度)为例. 脚本程序: #Add data file f = addfile('D:/Temp/hdf/2006001-2006005. ...
- java中文件是否为空
在File类中并没有提供判断文件是否为空的方法,但可以借助length()方法的返回值进行判断.如果文件不存在或文件为空时,length()方法返回0. File file = new File(&q ...
- 【UR #9】App 管理器
UOJ小清新题表 题目内容 UOJ链接 一句话题意:给出一个强联通的混合图,有一些有向边和无向边.删除一些边使其维持强联通的状态,求删边方案. 数据范围 \(1\leq n\leq 5000,0\le ...
- python 安装matplotlib
下载minianaconda 安装 进入cmd下 conda create --name python37 python=3.7 创建python3.7环境 conda activate pytho ...
- visio2016激活 试用版
输入秘钥: W9WC2-JN9W2-H4CBV-24QR7-M4HB8 可以成功激活成试用版 有效期30天,30天之后需要你正式激活! 经本人使用完全可以激活,欢迎大家使用! 也欢迎大家支持正 ...
- <article>
今天介绍的是html中<article>标签的用法,如果有兴趣的朋友可以看一下! <article> 标签规定独立的自包含内容. 一篇文章应有其自身的意义,应该有可能独立于站点 ...