Django框架实现的简单分页功能示例


Posted in Python onDecember 04, 2018

本文实例讲述了Django框架实现的简单分页功能。分享给大家供大家参考,具体如下:

前面一篇《Django开发的简易留言板》写了个简单的留言板,如果数据量太多的话在一页显示就不那么友好了,本文就是做一个分页显示。

代码在上一篇的基础上修改。

导入分页模块并修改views

#只需修改index函数即可
from django.core.paginator import Paginator
def index(request):
  messages = models.Message.objects.all() #获取全部数据
  limit = 10
  paginator = Paginator(messages, limit) #按每页10条分页
  page = request.GET.get('page','1') #默认跳转到第一页
  result = paginator.page(page)
  return render(request, 'guestbook/index.html', {'messages' : result})

修改html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>留言板</title>
    <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="external nofollow" crossorigin="anonymous">
  </head>
  <body>
    <table class="table table-striped table-bordered table-hover table-condensed">
      <thead>
        <tr class="danger">
          <th>留言时间</th>
          <th>留言者</th>
          <th>标题</th>
          <th>内容</th>
        </tr>
      </thead>
      <tbody>
        {% if messages %}
          {% for message in messages %}
            <tr class="{% cycle 'active' 'success' 'warning' 'info' %}">
              <td>{{ message.publish|date:'Y-m-d H:i:s' }}</td>
              <td>{{ message.username }}</td>
              <td>{{ message.title }}</td>
              <td>{{ message.content }}</td>
            </tr>
          {% endfor %}
        {% else %}
          <tr>
            <td colspan="4">无数据</td>
          </tr>
        {% endif %}
      </tbody>
    </table>
    <!-- 分页开始 -->
    <div>
      <ul class="pagination">
      <li><a href="/guestbook/index/?page=1" rel="external nofollow" >首页</a></li>
         {% if messages.has_previous %}
            <li><a href="/guestbook/index/?page={{ messages.previous_page_number }}" rel="external nofollow" >上一页</a></li>
        {% endif %}
         {% for num in messages.paginator.page_range %}
          <li><a href="/guestbook/index/?page={{ num }}" rel="external nofollow" >{{ num }}</a></li>
         {% endfor %}
        {% if messages.has_next %}
           <li><a href="/guestbook/index/?page={{ messages.next_page_number }}" rel="external nofollow" >下一页</a></li>
        {% endif %}
        <li><a href="/guestbook/index/?page={{ messages.paginator.num_pages }}" rel="external nofollow" >尾页</a></li>
       </ul>
    </div>
    <!-- 分页结束 -->
    <div>
       <a class="btn btn-xs btn-primary" href="/guestbook/create/" rel="external nofollow" >去留言</a>
    </div>
  </body>
</html>

其实主要使用了Django自带的Paginator模块,关于这个模块大家可以自己去官方文档查看,功能还是挺强大的,如果配合ListView的话,三行代码就可以实现分页功能。

希望本文所述对大家基于Django框架的Python程序设计有所帮助。

Python 相关文章推荐
浅析python 内置字符串处理函数的使用方法
Jun 11 Python
Python中使用第三方库xlutils来追加写入Excel文件示例
Apr 05 Python
Python中Django发送带图片和附件的邮件
Mar 31 Python
matplotlib在python上绘制3D散点图实例详解
Dec 09 Python
python pandas实现excel转为html格式的方法
Oct 23 Python
python实现比较类的两个instance(对象)是否相等的方法分析
Jun 26 Python
Python OpenCV图像指定区域裁剪的实现
Oct 30 Python
python pyinstaller打包exe报错的解决方法
Nov 02 Python
python爬虫模块URL管理器模块用法解析
Feb 03 Python
Django 允许局域网中的机器访问你的主机操作
May 13 Python
Python如何实现FTP功能
May 28 Python
python将字典内容写入json文件的实例代码
Aug 12 Python
Django开发的简易留言板案例详解
Dec 04 #Python
对python的bytes类型数据split分割切片方法
Dec 04 #Python
Python 从相对路径下import的方法
Dec 04 #Python
浅谈python中str字符串和unicode对象字符串的拼接问题
Dec 04 #Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
Dec 04 #Python
对web.py设置favicon.ico的方法详解
Dec 04 #Python
对python 命令的-u参数详解
Dec 03 #Python
You might like
中国第一家无线电行
2021/03/01 无线电
PHP和.net中des加解密的实现方法
2013/02/27 PHP
php+mysql实现用户注册登陆的方法
2015/01/03 PHP
Thinkphp3.2实用篇之计算型验证码示例
2017/02/09 PHP
javascript中的几个运算符
2007/06/29 Javascript
js移除事件 js绑定事件实例应用
2012/11/28 Javascript
使用Post提交时须将空格转换成加号的解释
2013/01/14 Javascript
jsvascript图像处理—(计算机视觉应用)图像金字塔
2013/01/15 Javascript
js 实现 input type=&quot;file&quot; 文件上传示例代码
2013/08/07 Javascript
jquery ajax实现下拉框三级无刷新联动,且保存保持选中值状态
2013/10/29 Javascript
nodeType属性返回被选节点的节点类型介绍
2013/11/22 Javascript
Javascript调用函数方法的几种方式介绍
2015/03/20 Javascript
echarts同一页面中四个图表切换的js数据交互方法示例
2018/07/03 Javascript
详解angular分页插件tm.pagination二次触发问题解决方案
2018/07/20 Javascript
Vue监听页面刷新和关闭功能
2019/06/20 Javascript
react实现移动端下拉菜单的示例代码
2020/01/16 Javascript
jquery css实现流程进度条
2020/03/26 jQuery
javascript实现简单留言板案例
2021/02/09 Javascript
pymssql数据库操作MSSQL2005实例分析
2015/05/25 Python
在Django框架中伪造捕捉到的URLconf值的方法
2015/07/18 Python
Python实现利用最大公约数求三个正整数的最小公倍数示例
2017/09/30 Python
python 定时器,实现每天凌晨3点执行的方法
2019/02/20 Python
Python3.5常见内置方法参数用法实例详解
2019/04/29 Python
django之对FileField字段的upload_to的设定方法
2019/07/28 Python
Django 解决新建表删除后无法重新创建等问题
2020/05/21 Python
python 使用递归的方式实现语义图片分割功能
2020/07/16 Python
浅谈HTML5中dialog元素尝鲜
2018/10/15 HTML / CSS
中国跨镜手机配件批发在线商店:TVC-Mall
2019/08/20 全球购物
荣耀俄罗斯官网:HONOR俄罗斯
2020/10/31 全球购物
2014国培学习感言
2014/03/05 职场文书
英文推荐信格式范文
2014/05/09 职场文书
奉献家乡演讲稿
2014/09/13 职场文书
道德与公民自我评价
2015/03/09 职场文书
2015年工商局个人工作总结
2015/07/23 职场文书
2016参观监狱警示教育活动心得体会
2016/01/15 职场文书
MySQL存储过程及语法详解
2022/08/05 MySQL