flask中的分页器
paginate(): 分页查询,返回一个分页对象
paginate(参数1, 参数2, 参数3) :
参数1:当前是第几页(page)
参数2:每页显示几条信息(per_page)
参数3:error_out:error_out= False 的情况下不会抛出异常
如果error_out = True 则下面几种情况会抛出404异常:找不到项目,并且page不是 page小于1,或者per_page为负数 page或per_page不是整数 page大于总页数;
@app.route('/booklist/', methods=['GET', 'POST'])
def book_list():
page = int(request.args.get('page', 1)) # 当前页数,request.args.get()方法获取页面的参数,如果没有获取到页码就默认为1
per_page = 3 # 每页数量
paginate = Book.query.paginate(page, per_page, error_out=False) # 创建分页器对象
return render_template('book_list_paginate.html', paginate= paginate)
属性:
items : 表示获得的查询结果
pages : 表示一共有多少页
page :获得当前页码数
total :数据总条数
has_prev: 是否有上一页
has_next: 是否有下一页
prev_num:上一页页码
next_num:下一页页码
iter_page():当前页的页码列表
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>books</title>
</head>
<body>
<h2>书籍信息</h2>
{% for b in paginate.items %}
编号:{{ b.id }}
书名:{{ b.name }}
<br>
{% endfor %}
总页数:{{ paginate.pages }}
数据总条数:{{ paginate.total }}
当前页数:{{ paginate.page }}
<a href="/booklist/?page=1">首页</a>
{% if paginate.has_prev %}
<a href="/booklist/?page={{ paginate.prev_num }}">上一页</a>
{% endif %}
{% if paginate.has_next %}
<a href="/booklist/?page={{ paginate.next_num }}">下一页</a>
{% endif %}
<a href="/booklist/?page={{paginate.pages}}">尾页</a>
页码:
{% for i in paginate.iter_pages() %}
<a href="/booklist/?page={{ i }}">{{ i }}</a>
{% endfor %}
</body>
</html>
flask中的分页器的更多相关文章
- FlASK中的endpoint问题
先贴一点有关的flask代码,时间有限,我慢慢扩充 以下是flask源码中app.py中add_url_rule的代码. 主要是view_func -- endpoint -- url 之间的对应关 ...
- Flask 中的 SQLAlchemy 使用教程
Flask 是一个 python web micro framework.所谓微框架,主要是 flask 简洁与轻巧,自定义程度高.相比 django 更加轻量级. 之前一直折腾 django,得益于 ...
- Flask中路由模块的实现
在Flask中的路由功能主要通过修饰函数route实现,下面我们就来挖掘下route在源代码中是怎么分配视图函数的. def route(self, rule, **options): def dec ...
- Flask中全局变量的实现
我们都知道在Flask中g,request,session和request是作为全局对象来提供信息的,既然是全局的又如何保持线程安全呢,接下来我们就看看flask是如何做到这点的.在源码中的ctx.p ...
- python web开发-flask中日志的使用
Flask使用日志记录的方式: 初始化flask应用实例 在flask中使用logger,需要初始化一个flask的应用 app = Flask(__name__) 2. 调用logger 直接调用l ...
- Flask中使用数据库连接池 DBUtils ——(4)
DBUtils是Python的一个用于实现数据库连接池的模块. 此连接池有两种连接模式: 模式一:为每个线程创建一个连接,线程即使调用了close方法,也不会关闭,只是把连接重新放到连接池,供自己线程 ...
- 第七篇 Flask 中路由系统以及参数
Flask中的路由系统其实我们并不陌生了,从一开始到现在都一直在应用 @app.route("/",methods=["GET","POST" ...
- 第六篇 flask中session
Flask中的Session非常的奇怪,他会将你的SessionID存放在客户端的Cookie中,使用起来也非常的奇怪 Flask 中 session 的使用 1. Flask 中 session 是 ...
- 第四篇flask中模板语言 jinja2
Flask中默认的模板语言是Jinja2 首先我们要在后端定义几个字符串,用于传递到前端 STUDENT = {, 'gender': '中'}, STUDENT_LIST = [ {, 'gende ...
随机推荐
- 难道同事:Java 方法调用到底是传值还是传引用
Java 方法调用中的参数是值传递还是引用传递呢?相信每个做开发的同学都碰到过传这个问题,不光是做 Java 的同学,用 C#.Python 开发的同学同样肯定遇到过这个问题,而且很有可能不止一次. ...
- 差分放大电路的CMRR与输入电阻分析
分析了经典差分放大电路的共模抑制比CMRR与输入电阻RIN 1.经典差分放大电路 基于运放的经典差分放大电路在各模电教材中均能找到,利用分离电阻和运算放大器实现,如图1所示为一种差分放大电路: 图1 ...
- nor flash之4字节地址模式
背景 容量低于 16M bytes 的 nor,一般使用 3 字节地址模式,即命令格式是 cmd + addr[2] + addr[1] + addr[0] + ... 使用超过 16M bytes ...
- Win10系统下安装tensorflow(cpu)+keras+jupyter notebook运行环境
记录,自用 1.安装Anaconda(这里安装的是python3.6版本) 2.创建tensorflow的conda环境 conda create -n tensorflow python=3.6 3 ...
- JetBrains 第二轮:再为免费全家桶续命三个月
昨天分享了如何通过参与JetBrains的解密任务来获取正版全家桶的兑换码.今天 JetBrains 一早继续在Twitter推出第二波任务: 下面,我们就继续来一起参与一下,为我们的正版JetBra ...
- ASP.NET Core 中jwt授权认证的流程原理
目录 1,快速实现授权验证 1.1 添加 JWT 服务配置 1.2 颁发 Token 1.3 添加 API访问 2,探究授权认证中间件 2.1 实现 Token 解析 2.2 实现校验认证 1,快速实 ...
- 环境变量之classpath配置和临时配置
前言 本篇文章介绍classpath环境变量的配置和一个环境变量配置的技巧:临时配置path环境变量. 正文 classpath环境变量配置 在上完了"Hello World"这堂 ...
- express模块中的req,res参数的常用属性方法
express模块中的req,res参数的常用属性方法 const express = require('express'); const router = express.Router() rout ...
- 一起了解 .Net Foundation 项目 No.20
.Net 基金会中包含有很多优秀的项目,今天就和笔者一起了解一下其中的一些优秀作品吧. 中文介绍 中文介绍内容翻译自英文介绍,主要采用意译.如与原文存在出入,请以原文为准. System.Drawin ...
- rimraf node_modules 突然不能用了 怀疑是yarn的问题,从环境变量将yarn删掉,能用了
rimraf node_modules 突然不能用了 怀疑是yarn的问题,从环境变量将yarn删掉,能用了