mako模板+django+分页

遇到的问题:我看网上html页面大家通过page2.next_page_number和page2.preivous_page_number获取上一页和下一页的页码,而我在mako页面获取到的是一串很长的字符串,而不是需要的页码数,我的解决方案是通过后端传过来上一页和下一页的页码。

1.网上我找到的大多数是针对html页面来写的基于django框架的分页,我对着网上的针对自己的情况进行了修改。

2.首先看一下后端代码,别看这么多,其实起作用的就4句话,我都打了注解。

def modelmanager(request):     apps = appmanager.get_apps_dict(request.user)     models = model.objects.all() #查询所有数据     paginator = Paginator(models, 10)  # 每页显示10条纪录     page = request.GET.get('page')  # 获取客户端请求传来的页码     next=''     pre=''     try:         customer_list = paginator.page(page)  # 返回用户请求的页码对象         if customer_list.has_next():             next=customer_list.next_page_number()         else:             next=customer_list.number         if customer_list.has_previous():             pre=customer_list.previous_page_number()         else:             pre='1'     except PageNotAnInteger:         customer_list = paginator.page(1)  # 如果请求中的page不是数字,也就是为空的情况下     except EmptyPage:         customer_list = paginator.page(paginator.num_pages)  # 如果请求的页码数超出paginator.page_range(),则返回paginator页码对象的最后一页     return render('modelmanager.mako', request, {         'models': customer_list,         'date': datetime.datetime.now(),         'apps': apps,         'is_embeddable': request.GET.get('is_embeddable', False),         'pre':pre,         'next':next,     })

3.分页的写法,这是在mako模板中的写法。

<div class="pagination">     <nav>         <ul class="pagination">             % if models.has_previous:                 <li ><a href="?page=${pre}" aria-label="Previous"><span                         aria-hidden="true">&laquo;</span></a></li>             % endif             % for page_num in models.paginator.page_range:                 % if page_num == models.number:                     <li class="active"><a href="?page=${page_num}">${page_num}<span class="sr-only">(current)</span></a>                     </li>                 % else:                     <li ><a href="?page=${page_num}">${page_num}<span class="sr-only">(current)</span></a></li>                 % endif             % endfor             % if models.has_next:                 <li ><a href="?page=${next}" aria-label="Next"><span aria-hidden="true">&raquo;</span></a>                 </li>             % endif         </ul>     </nav> </div>

4.数据的展示,这个通过foreach将数据展示出来就可以。

<div style="width:100%">     <table id="models_manager" class="table table-striped table-bordered table-condensed" style="width:100%;table-layout:fixed;">         <thead>         <tr>             <th class="width1">序号</th>             <th class="width2">名称</th>             <th class="width3">类型</th>             <th class="width1">所有者</th>             <th class="width2">日期</th>             <th class="width3">训练集</th>             <th class="width3">模型路径</th>             <th class="width3">训练参数</th>             <th class="width3">评估表名</th>             <th class="width3">操作</th>         </tr>         </thead>         <tbody>             % for model in models:                 <tr>                     <td id="${model.id}" name="id" >${model.id}</td>                     <td id="${model.m_name}" name="m_name" data-toggle="tooltip" data-placement="bottom" title="${model.m_name}">${model.m_name}</td>                     <td id="${model.m_type}" name="m_type" data-toggle="tooltip" data-placement="bottom" title="${model.m_type}">${model.m_type}</td>                     <td id="${model.m_user}" name="m_user" data-toggle="tooltip" data-placement="bottom" title="${model.m_user}">${model.m_user}</td>                     <td id="${model.m_time}" name="m_time" data-toggle="tooltip" data-placement="bottom" title="${model.m_time}">${model.m_time}</td>                     <td id="${model.m_traindata}" names="m_traindata" data-toggle="tooltip" data-placement="bottom" title="${model.m_traindata}">${model.m_traindata}</td>                     <td id="${model.m_path}" name="m_path" data-toggle="tooltip" data-placement="bottom" title="${model.m_path}">${model.m_path}</td>                     <td id="${model.m_arguments}" name="m_arguments" data-toggle="tooltip" data-placement="bottom" title="${model.m_arguments}" >${model.m_arguments}</td>                     <td id="${model.evaluate_tablename}" name="evaluate_tablename" data-toggle="tooltip" data-placement="bottom" title="${model.evaluate_tablename}" >${model.evaluate_tablename}</td>                     <td >                         <button style="width:85px;height:35px" type="button" class="btn btn-primary" id='${model.evaluate_tablename}'                                 onclick="show_evaluate(event,${model.evaluate_tablename})">评估结果                         </button>                     </td>                 </tr>             % endfor         </tbody>     </table> </div>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Seebug漏洞平台

CVE-2015-1641 Word 利用样本分析

00 引 子 本文我们将通过一个恶意文档的分析来理解漏洞 CVE-2015-1641(MS15-033)的具体利用过程,以此还原它在现实攻击中的应用。就目前来...

3028
来自专栏Spring相关

快速初步了解Neo4j与使用

Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是...

661
来自专栏逆向技术

16位汇编第六讲汇编指令详解第二讲

              16位汇编第六讲汇编指令详解第二讲 1.比较指令   CMP指令   1.CMP指令是将目的操作数减去源操作数,按照定义相应的设置状...

1685
来自专栏美团技术团队

Android Hook技术防范漫谈

背景 当下,数据就像水、电、空气一样无处不在,说它是“21世纪的生产资料”一点都不夸张,由此带来的是,各行业对于数据的争夺热火朝天。随着互联网和数据的思维深入人...

4057
来自专栏西枫里博客

ASP分页应用bootstrap分页组件。

鉴于虚拟主机的性能限制,或者为了更好更快的上线网站或者成本原因,有的时候需要使用asp来开发动态站,并且现在移动端的流量普遍大于PC段,又需要体验自适应的效果。...

441
来自专栏Jerry的SAP技术分享

ABAP,Java和JavaScript的序列化,反序列化

1. ABAP提供了一个工具类cl_proxy_xml_transform,通过它的两个方法abap_to_xml_xstring和xml_xstring_to...

482
来自专栏学习力

《Java从入门到放弃》JavaSE入门篇:单元测试

1546
来自专栏数据小魔方

左手用R右手Python系列16——XPath与网页解析库

最近写了不少关于网页数据抓取的内容,大多涉及的是网页请求方面的,无论是传统的RCurl还是新锐大杀器httr,这两个包是R语言中最为主流的网页请求库。 但是整个...

3095
来自专栏青玉伏案

iOS逆向工程之Hopper中的ARM指令

虽然前段时间ARM被日本软银收购了,但是科技是无国界的,所以呢ARM相关知识该学的学。现在看ARM指令集还是倍感亲切的,毕竟大学里开了ARM这门课,并且做了不少...

2057
来自专栏杨建荣的学习笔记

两个关于权限设置的问题思考

最近这两天做动态菜单和权限校验,想到了两个有意思的问题。 第一个是对于一个用户的操作权限,无非就是这四个方面,增删改查。 如果通过字母来标识,可能就是增(I)删...

3407

扫码关注云+社区