flask的分页功能
分页是个很通用的东西,在flask中,有一个macro的语法,类似于宏,我们可以将通用的东西通过macro写入单独的html文件以方便维护,减少代码量。下面是我的分页的macro文件render_pagination.html,里面用到的样式都是bootstrap中的,如下:
{% macro render_pagination(pagination) %}
<div class=pagination>
{% if pagination.has_prev %}
<a href="{{ url_for_other_page(pagination.page - 1) }}" class="btn btn-info btn-sm">上一页</a>
{% endif %}
{% for page in pagination.iter_pages() %}
{% if page %}
{% if page != pagination.page %}
<a href="{{ url_for_other_page(page) }}" class="btn btn-info btn-sm">{{ page }}</a>
{% else %}
<a href="{{ url_for_other_page(page) }}" class="btn btn-info btn-sm" disabled="disabled">{{ page }}</a>
{% endif %}
{% else %}
<span class=ellipsis>…</span>
{% endif %}
{% endfor %}
{% if pagination.has_next %}
<a href="{{ url_for_other_page(pagination.page + 1) }}" class="btn btn-info btn-sm">下一页</a>
{% endif %}
</div>
{% endmacro %}
上面的代码分三部分,一是判断是否有前一页,有则显示上一页按钮,中间的for循环为页数的迭代展示,最后一部分是判断是否有下一页,有则显示相应按钮。
这个macro中涉及到一个url_for_other_page函数,我们定义如下:
def url_for_other_page(page):
# args = request.view_args.copy()
args = dict(request.view_args.items() + request.args.to_dict().items()) #如果采用上面那句则换页时querystring会丢失
args['page'] = page
return url_for(request.endpoint, **args) app.jinja_env.globals['url_for_other_page'] = url_for_other_page
上面的代码定义了url_for_other_page函数,注意到里面对args的赋值采用了dict,当时我不是这么写的,当时只用了request.view_args.copy(),结果点击第二页的时候,查询参数就丢失了,很是头大,后台查询资料后写成dict那种方式,查询参数就不会丢失了。
这个函数定义好后,我们向flask的jinja引擎注册一个环境变量,然后就可以在模板中使用这个方法了。
上面定义好后,我们只需要在需要引入分页的页面添加下面的代码:
<div style="float: right">
{% from "macros/render_pagination.html" import render_pagination %}
{{ render_pagination(pagination) }}
</div>
结束!!
flask的分页功能的更多相关文章
- Flask实现分页功能
可以参考: https://blog.csdn.net/weixin_36380516/article/details/80295101 也可以参考我的代码: https://github.com/z ...
- Flask学习之旅--分页功能:分别使用 flask--pagination 和分页插件 layPage
一.前言 现在开发一个网站,分页是一个很常见的功能了,尤其是当数据达到一定量的时候,如果都显示在页面上,会造成页面过长而影响用户体验,除此之外,还可能出现加载过慢等问题.因此,分页就很有必要了. 分页 ...
- flask 前端 分页 显示
# flask 前端 分页 显示 1.分页原理 web查询大量数据并显示时有有三种方式: 从数据库中查询全部,在view/客户端筛选/分页:不能应对记录大多的情况,一般不使用: 分页查询,每次在数据库 ...
- 测试开发【提测平台】分享9-DBUntils优化数据连接&实现应用搜索和分页功能
微信搜索[大奇测试开],关注这个坚持分享测试开发干货的家伙. 从本期开始知识点讲以思维导图的形式给出,内容点会按照讲解-应用-展示的形式体现,这样会更清晰些. DBUntils连接池 在项目中链接数据 ...
- 简单封装分页功能pageView.js
分页是一个很简单,通用的功能.作为一个有经验的前端开发人员,有义务把代码中类似这样公共的基础性的东西抽象出来,一来是改善代码的整体质量,更重要的是为了将来做类似的功能或者类似的项目,能减少不必要的重复 ...
- php对文本文件进行分页功能简单实现
php对文本文件进行分页功能简单实现 <!DOCTYPE> <html> <head> <meta http-equiv="Content-type ...
- Asp.net MVC3表格共用分页功能
在建立的mvc3项目中,在Razor(CSHTML)视图引擎下,数据会在表格中自动的生成,但分页没有好的控件实现,这里我们开发了设计了一个分页的模板,适合于没有数据提交和有数据提交的分页的分页. 第一 ...
- WinForm DataGridView分页功能
WinForm 里面的DataGridView不像WebForm里面的GridView那样有自带的分页功能,需要自己写代码来实现分页,效果如下图: 分页控件 .CS: 1 using System; ...
- Net 分页功能的实现
首先写一个接口 1 2 3 4 5 6 public interface IPagedList { int CurrentPageIndex { get; set; } ...
随机推荐
- "贪心"的考试
先来落实比较简单的T3,T4 T3 团结的队伍 team 题目描述 众所周知,长郡信息组是一个团结友爱的优秀团队.为了弘扬团队精神,践行社会主义核心价值观,秉承朴实沉毅的校训,信息组决定外出游玩(. ...
- Android SQLite使用
1. 介绍 SQLite是一款轻型的数据库, 是遵守ACID的关系型数据库管理系统, Android系统已经在框架中适配接口供用户使用. 2. 数据类型 SQLite采用的是动态数据类型, 会根据存入 ...
- linux进程地址空间--vma的基本操作【转】
转自:http://blog.csdn.net/vanbreaker/article/details/7855007 版权声明:本文为博主原创文章,未经博主允许不得转载. 在32位的系统上,线性地址空 ...
- MyBatis学习总结(一)mybatis与spring整合
MyBatis学习总结(一)mybatis与spring整合 一.需要的jar包 1.spring相关jar包 2.Mybatis相关的jar包 3.Spring+mybatis相关jar包 4.My ...
- python delete数据
#!/usr/bin/env python # -*- coding:utf-8 -*- # @Time : 2017/11/24 0:27 # @Author : lijunjiang # @Fil ...
- 无类型指针 在delphi中可以直接赋值任何指针类型。
- Codeforces 1037F. Maximum Reduction
总感觉我这种做法会T,一直没写,看了其他人的题解也是这样,,,就果断写了,,可能数据不太深,或者玄学复杂度 题意即求xk-1长度的所有区间的最大值的和,对每一个i(数组下边),他对答案的贡献数量就是在 ...
- bzoj 2843: 极地旅行社
Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1077 Solved: 645[Submit][Status][Discuss] Descripti ...
- Redis2.8.7配置文件说明
Redis master配置文件说明 daemonize no 默认情况下,redis不是在后台运行的,如果需要在后台运行,把该项的值更改为yes daemonize yes # 当redis在后台运 ...
- 【ASP.NET】 中 system.math 函数使用
1 /* 字段 */ 2 Math.E; //2.71828182845905 3 Math.PI; //3.14159265358979 4 5 /* 静态方法 */ 6 Math.Abs; //绝 ...