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中使用异步Socket编程性能测试
Jun 25 Python
Python实现的数据结构与算法之链表详解
Apr 22 Python
Python编程中对文件和存储器的读写示例
Jan 25 Python
Python实现网站注册验证码生成类
Jun 08 Python
Python3实战之爬虫抓取网易云音乐的热门评论
Oct 09 Python
python opencv实现切变换 不裁减图片
Jul 26 Python
python字符串Intern机制详解
Jul 01 Python
Django数据库操作之save与update的使用
Apr 01 Python
浅谈多卡服务器下隐藏部分 GPU 和 TensorFlow 的显存使用设置
Jun 30 Python
python代数式括号有效性检验示例代码
Oct 04 Python
Python超简单容易上手的画图工具库推荐
May 10 Python
pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
May 22 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
javascript事件模型代码
2007/07/01 Javascript
jquery加载页面的方法(页面加载完成就执行)
2011/06/21 Javascript
Angularjs全局变量被作用域监听的正确姿势
2016/02/06 Javascript
jquery对象和DOM对象的任意相互转换
2016/02/21 Javascript
关于JS 预解释的相关理解
2016/06/28 Javascript
jQuery树形插件jquery.simpleTree.js用法分析
2016/09/05 Javascript
微信小程序Redux绑定实例详解
2017/06/07 Javascript
微信小程序开发之toast等弹框提示使用教程
2017/06/08 Javascript
JavaScript模拟实现封装的三种方式及写法区别
2017/10/27 Javascript
微信小程序基于slider组件动态修改标签透明度的方法示例
2017/12/04 Javascript
JS中常用的消息框总结
2018/02/24 Javascript
微信小程序中实现手指缩放图片的示例代码
2018/03/13 Javascript
vue iview组件表格 render函数的使用方法详解
2018/03/15 Javascript
VUE实现自身整体组件销毁的示例代码
2020/01/13 Javascript
JS端基于download.js实现图片、视频时直接下载而不是打开预览
2020/05/09 Javascript
简单介绍Python中的decode()方法的使用
2015/05/18 Python
matplotlib在python上绘制3D散点图实例详解
2017/12/09 Python
理论讲解python多进程并发编程
2018/02/09 Python
Python浅复制中对象生存周期实例分析
2018/04/02 Python
python模块smtplib学习
2018/05/22 Python
python 实现得到当前时间偏移day天后的日期方法
2018/12/31 Python
python Tkinter的图片刷新实例
2019/06/14 Python
python numpy 反转 reverse示例
2019/12/04 Python
pytorch 修改预训练model实例
2020/01/18 Python
Python爬虫headers处理及网络超时问题解决方案
2020/06/19 Python
移动端rem布局的两种实现方法
2018/01/03 HTML / CSS
CSS3 选择器 基本选择器介绍
2012/01/21 HTML / CSS
印尼最大的在线购物网站:MatahariMall.com
2016/08/26 全球购物
英国著名的小众美容品牌网站:Alyaka
2017/08/08 全球购物
戴尔新西兰官网:Dell New Zealand
2020/01/07 全球购物
积极贯彻学习两会精神总结
2014/03/17 职场文书
2015年科室工作总结
2015/04/10 职场文书
2016年度继续教育学习心得体会
2016/01/19 职场文书
《观察物体》教学反思
2016/02/17 职场文书
《夹竹桃》教学反思
2016/02/23 职场文书
Vue+Element UI实现概要小弹窗的全过程
2021/05/30 Vue.js