django 写测试工具用到的 paginator 分页

作者:郭佳明

导语

之前写CC的测试平台的时候,里面有一个机器管理列表信息,使用表格来展示的,数据量大概有240多条,需要用到分页。之前没有接触bootstrap table,而是网上随便找了一个表格样式,嵌套了进去。后面做分页又使用了django paginator。做好之后发现,其实bootstrap table也不完全适用我的场景,稍微心里好受点。。

如果想要看bootstrap table做表格以及分页的就网上找资料吧,挺多的。

django paginator也是,现在我主要是再次分享一下我的使用经验。

使用简单,就两步操作如下:

1.django后台页面views文件引用了三个django paginator的包,然后主要逻辑按照如下格式对 all_agents变量做一下分页处理打包成agents变量

from django.core.paginator import Paginator
from django.core.paginator import PageNotAnInteger
from django.core.paginator import EmptyPage

def agentsmanager(request):                 #前台页面访问的时候调用此方法
    page_num=1                               #这里默认查询page_num=1第一页的数据
    if 'page' in request.GET:
        page_num= request.GET['page']

    .....                                    #省略逻辑计算查询结果all_agents

    paginator = Paginator(all_agents, 10)      #默认每页展示10条数据
    try:
        context['agents'] = paginator.page(page_num)
    except PageNotAnInteger:
        context['agents'] = paginator.page(1)
    except EmptyPage:
        context['agents'] = paginator.page(paginator.num_pages)

    return render(request, 'agentsmanager.html', context)

2 渲染agentsmanager.html页面的时候,参数是context,里面包含agents的信息。for循环展示表格内容之后,按照如下格式,对agents变量做一下分页判断

<table>
{% for agent in agents %}
        <tr>
        <td>{{ agent.0 }}td>
        <td>{{ agent.1 }}td>    #这里是渲染表格的内容
        <td>{{ agent.2 }}td>
        tr>
{% endfor %}
table>

 {% if agents.has_previous %}            #这个是分页的判断
 <a class='paginator' title='上一页' href='?page={{ agents.previous_page_number }}'><span><<span>a>
 {% endif %}
 {% for page in agents.paginator.page_range %}
         {% if page == agents.number %}
                 <a class='paginator_current' title='当前页:{{ page }}'><span>{{ page }}span>a>
         {% else %}
                 <a class='paginator' href='?page={{ page }}' title='{{ page }}'><span>{{ page }}span>a>
         {% endif %}
 {% endfor %}
 {% if agents.has_next %}
         <a class='paginator' title='下一页' href='?page={{ agents.next_page_number }}'><span>>>span>a>
 {% endif %}

两步就结束了 因为是测试工具,功能OK就可以了。 当然如果想要做更加好看点,可以上网找点其他资料,或者可以使用bootstrap做分页

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏GreenLeaves

iframe 解析

简介:iframe在日常的开发中经常用到,本随笔在参考http://blog.csdn.net/cuew1987/article/details/1126515...

21110
来自专栏大前端开发

使用mpvue开发小程序教程(五)

在上一章节中,我们了解了组件的三个基本特性以及组件的基本使用方法。在实际的小程序开发中,我们应该以组件的思维去设计每个小程序的功能页面,对其进行合理的组件拆分,...

1152
来自专栏智能算法

微信小程序,开发大起底

作者简介:张智超,北京微函工坊开发工程师,CSDN微信开发知识库特邀编辑。微信小程序爱好者。 感谢@翟东平 @qq_31383345 @nigelyq 等热情参...

42513
来自专栏nice_每一天

一天带你入门到放弃vue.js(三)

自己新建的标签赋予特殊功能的是组件,而指定是在标签上使用类似于属性,以v-name开头,v-on,v-if...是系统指令! v-是表示这是vue的指令if,f...

941
来自专栏WD学习记录

8-15 Android 学习ing

过去只有FILL_PARENT和WRAP_CONTENT那么match_parent到底是什么类型呢? 其实从Android 2.2开始FILL_PARENT改...

832
来自专栏React Native开发圈

React Native面试知识点

本文会不定期不断更新,想查看最新版本请移步至https://github.com/forrest23/react-native-interview

1101
来自专栏别先生

jQuery/javascript实现网页注册的表单验证

1 <html> 2 <head> 3 <meta charset="utf-8"> 4 <title>注册表单验证</title> 5 <...

1816
来自专栏macOS 开发学习

macOS 应用开发小集锦

输出结果与当前app的语言环境有关(默认为English),如果需要修改工程的语言环境,需要设置Edit Scheme...

782
来自专栏自动化测试实战

flask第34篇——测试器、模板继承

http://jinja.pocoo.org/docs/2.10/templates/#list-of-builtin-tests

572
来自专栏xingoo, 一个梦想做发明家的程序员

编写兼容性JS代码

前文介绍了:  1 DOM四个常用的方法   2 使用DOM核心方法完成属性填充 本篇主要介绍在JS中需要注意的几个地方,另外为了减小html与jav...

1819

扫码关注云+社区