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常用正则表达式符号浅析
Aug 13 Python
基于python批量处理dat文件及科学计算方法详解
May 08 Python
PHP实现发送和接收JSON请求
Jun 07 Python
tensorflow saver 保存和恢复指定 tensor的实例讲解
Jul 26 Python
在python中只选取列表中某一纵列的方法
Nov 28 Python
python查找重复图片并删除(图片去重)
Jul 16 Python
Flask框架请求钩子与request请求对象用法实例分析
Nov 07 Python
python实现差分隐私Laplace机制详解
Nov 25 Python
python脚本监控logstash进程并邮件告警实例
Apr 28 Python
python属于解释型语言么
Jun 15 Python
Python使用xlrd实现读取合并单元格
Jul 09 Python
python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)
Apr 06 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/03 咖啡文化
php 输出json及显示json中的中文汉字详解及实例
2016/11/09 PHP
PHP调用Mailgun发送邮件的方法
2017/05/04 PHP
html+javascript实现可拖动可提交的弹出层对话框效果
2013/08/05 Javascript
js单词形式的运算符
2014/05/06 Javascript
node.js中的fs.lchmod方法使用说明
2014/12/16 Javascript
jQuery中outerWidth()方法用法实例
2015/01/19 Javascript
JS实现为表格动态添加标题的方法
2015/03/31 Javascript
简述JavaScript对传统文档对象模型的支持
2015/06/16 Javascript
JS实现获取键盘按下的按键并显示在页面上的方法
2015/11/04 Javascript
分享JavaScript与Java中MD5使用两个例子
2015/12/23 Javascript
javascript的 {} 语句块详解
2016/02/27 Javascript
JS/jQuery判断DOM节点是否存在的简单方法
2016/11/24 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
2017/05/02 Javascript
JS实现的简单折叠展开动画效果示例
2018/04/28 Javascript
Promise.all中对于reject的处理方法
2018/08/01 Javascript
vue实现动态按钮功能
2019/05/13 Javascript
在Vue项目中用fullcalendar制作日程表的示例代码
2019/08/04 Javascript
Python中的XML库4Suite Server的介绍
2015/04/14 Python
Python遍历目录并批量更换文件名和目录名的方法
2016/09/19 Python
你眼中的Python大牛 应该都有这份书单
2017/10/31 Python
python实现淘宝秒杀脚本
2020/06/23 Python
python里dict变成list实例方法
2019/06/26 Python
python 图像处理画一个正弦函数代码实例
2019/09/10 Python
html5模拟平抛运动(模拟小球平抛运动过程)
2013/07/25 HTML / CSS
美国便宜的横幅和标志印刷在线:Best of Signs
2019/05/29 全球购物
二手房买卖协议书
2014/04/10 职场文书
《最大的麦穗》教学反思
2014/04/17 职场文书
党员学习新党章思想汇报
2014/10/25 职场文书
2015年绩效考核工作总结
2015/05/23 职场文书
《风筝》教学反思
2016/02/23 职场文书
在pycharm中无法import所安装的库解决方案
2021/05/31 Python
基于Redis的List实现特价商品列表功能
2021/08/30 Redis
使用RedisTemplat实现简单的分布式锁
2021/11/20 Redis
详解Mysql数据库平滑扩容解决高并发和大数据量问题
2022/05/25 MySQL
JS轻量级函数式编程实现XDM三
2022/06/16 Javascript