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读取csv文件示例(python操作csv)
Mar 11 Python
python中偏函数partial用法实例分析
Jul 08 Python
python设置值及NaN值处理方法
Jul 03 Python
解决pyinstaller打包发布后的exe文件打开控制台闪退的问题
Jun 21 Python
浅析Python+OpenCV使用摄像头追踪人脸面部血液变化实现脉搏评估
Oct 17 Python
python实现广度优先搜索过程解析
Oct 19 Python
python对象转字典的两种实现方式示例
Nov 07 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
Nov 08 Python
python绘制雪景图
Dec 16 Python
200行python代码实现贪吃蛇游戏
Apr 24 Python
python使用列表的最佳方案
Aug 12 Python
Python基于Serializer实现字段验证及序列化
Nov 04 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
php二分法在IP地址查询中的应用
2008/08/12 PHP
php中一个有意思的日期逻辑处理
2012/03/25 PHP
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
2014/07/19 PHP
php+mysqli实现批量执行插入、更新及删除数据的方法
2015/01/29 PHP
Apache启动报错No space left on device: AH00023该怎么解决
2015/10/16 PHP
php+ajax实现无刷新分页
2015/11/18 PHP
为javascript添加String.Format方法
2020/08/11 Javascript
js中哈希表的几种用法总结
2014/01/28 Javascript
jQuery实现手机号码输入提示功能实例
2015/04/30 Javascript
JS/Jquery判断对象为空的方法
2015/06/11 Javascript
全面了解js中的script标签
2016/07/04 Javascript
基于Three.js实现360度全景图片
2018/12/30 Javascript
layer弹出框确定前验证:弹出消息框的方法(弹出两个layer)
2019/09/21 Javascript
JS window对象简单操作完整示例
2020/01/14 Javascript
JavaScript实现五子棋小游戏
2020/10/26 Javascript
[02:02]2018DOTA2亚洲邀请赛Mineski赛前采访
2018/04/04 DOTA
Python实现CET查分的方法
2015/03/10 Python
Python定时执行之Timer用法示例
2015/05/27 Python
详解Python Socket网络编程
2016/01/05 Python
TensorFlow实现MLP多层感知机模型
2018/03/09 Python
python爬虫之xpath的基本使用详解
2018/04/18 Python
python numpy 部分排序 寻找最大的前几个数的方法
2018/06/27 Python
Python把对应格式的csv文件转换成字典类型存储脚本的方法
2019/02/12 Python
Python时间和字符串转换操作实例分析
2019/03/16 Python
opencv3/C++ 平面对象识别&amp;透视变换方式
2019/12/11 Python
python深copy和浅copy区别对比解析
2019/12/26 Python
win10安装python3.6的常见问题
2020/07/01 Python
python定时截屏实现
2020/11/02 Python
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
2014年村计划生育工作总结
2014/11/14 职场文书
检讨书格式
2015/01/23 职场文书
困难补助申请报告
2015/05/19 职场文书
信息技术研修心得体会
2016/01/08 职场文书
2019年员工晋升管理制度范本!
2019/07/08 职场文书
HR必备:销售经理聘用合同范本
2019/08/21 职场文书
java实现自定义时钟并实现走时功能
2022/06/21 Java/Android