分页是个很通用的东西,在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的分页功能的更多相关文章

  1. Flask实现分页功能

    可以参考: https://blog.csdn.net/weixin_36380516/article/details/80295101 也可以参考我的代码: https://github.com/z ...

  2. Flask学习之旅--分页功能:分别使用 flask--pagination 和分页插件 layPage

    一.前言 现在开发一个网站,分页是一个很常见的功能了,尤其是当数据达到一定量的时候,如果都显示在页面上,会造成页面过长而影响用户体验,除此之外,还可能出现加载过慢等问题.因此,分页就很有必要了. 分页 ...

  3. flask 前端 分页 显示

    # flask 前端 分页 显示 1.分页原理 web查询大量数据并显示时有有三种方式: 从数据库中查询全部,在view/客户端筛选/分页:不能应对记录大多的情况,一般不使用: 分页查询,每次在数据库 ...

  4. 测试开发【提测平台】分享9-DBUntils优化数据连接&实现应用搜索和分页功能

    微信搜索[大奇测试开],关注这个坚持分享测试开发干货的家伙. 从本期开始知识点讲以思维导图的形式给出,内容点会按照讲解-应用-展示的形式体现,这样会更清晰些. DBUntils连接池 在项目中链接数据 ...

  5. 简单封装分页功能pageView.js

    分页是一个很简单,通用的功能.作为一个有经验的前端开发人员,有义务把代码中类似这样公共的基础性的东西抽象出来,一来是改善代码的整体质量,更重要的是为了将来做类似的功能或者类似的项目,能减少不必要的重复 ...

  6. php对文本文件进行分页功能简单实现

    php对文本文件进行分页功能简单实现 <!DOCTYPE> <html> <head> <meta http-equiv="Content-type ...

  7. Asp.net MVC3表格共用分页功能

    在建立的mvc3项目中,在Razor(CSHTML)视图引擎下,数据会在表格中自动的生成,但分页没有好的控件实现,这里我们开发了设计了一个分页的模板,适合于没有数据提交和有数据提交的分页的分页. 第一 ...

  8. WinForm DataGridView分页功能

    WinForm 里面的DataGridView不像WebForm里面的GridView那样有自带的分页功能,需要自己写代码来实现分页,效果如下图: 分页控件  .CS: 1 using System; ...

  9. Net 分页功能的实现

    首先写一个接口   1 2 3 4 5 6 public interface IPagedList     {         int CurrentPageIndex { get; set; }   ...

随机推荐

  1. FreeRTOS系列第2篇---FreeRTOS入门指南【转】

    转自:http://blog.csdn.net/zhzht19861011/article/details/49819309 版权声明:本文为博主原创文章,未经博主允许不得转载.联系邮箱:zhzhch ...

  2. Linux内核情景分析之异常访问,用户堆栈的扩展

    情景假设: 在堆内存中申请了一块内存,然后释放掉该内存,然后再去访问这块内存.也就是所说的野指针访问. 当cpu产生页面错误时,会把失败的线性地址放在cr2寄存器.线性地址缺页异常的4种情况 1.如果 ...

  3. python 666

    运行下面代码会输出什么? __builtins__.我们来运行下这行代码看看="666" #!/usr/bin/env python # encoding: utf-8 def _ ...

  4. yii上传图片、yii上传文件、yii控件activeFileField使用

    yii框架提供了activeFileField控件来完成上传文件(当然也包括了上传图片)的操作,下面介绍yii的activeFileField使用方法.1.函数原型:public static str ...

  5. mysql 故障整理

    mysql> system mysqldump -uroot -p -B mingongge >/root/mingongge_bak.sql Enter password: mysqld ...

  6. wsgi的学习(2):uWSGI的概念

    uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换. 要注意 WSGI / uwsgi / u ...

  7. 【原创】DataPackage-数据库、表的区域设置和系统不一致导致处理失败

    问题描述: 最近学习Datapackage,创建完之后,部署处理但总是提示某某字段的区域设置和目标字段的区域设置不一致,具体如图: 测试发现其它的数据库表又没有这类的问题发生,甚是苦恼,搜寻了好久,后 ...

  8. HDU 17新生赛 正品的概率【数论-概率论】

    正品的概率 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  9. Python的网络编程[1] -> FTP 协议[0] -> FTP 的基本理论

    FTP协议 / FTP Protocol FTP全称为File Transfer Protocol(文件传输协议),常用于Internet上控制文件的双向传输,常用的操作有上传和下载.基于TCP/IP ...

  10. 服务的注册与发现Eureka(二)

    1.服务治理概念 在传统rpc远程调用中,服务与服务依赖关系,管理比较复杂,所以需要使用服务治理,管理服务与服务之间依赖关系,可以实现服务调用.负载均衡.容错等,实现服务发现与注册. 2.服务的注册与 ...