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编程中对文件和存储器的读写示例
Jan 25 Python
python list元素为tuple时的排序方法
Apr 18 Python
python 遍历列表提取下标和值的实例
Dec 25 Python
python 产生token及token验证的方法
Dec 26 Python
5款Python程序员高频使用开发工具推荐
Apr 10 Python
使用django的ORM框架按月统计近一年内的数据方法
Jul 18 Python
Django 全局的static和templates的使用详解
Jul 19 Python
如何爬取通过ajax加载数据的网站
Aug 15 Python
在django模板中实现超链接配置
Aug 21 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
Feb 23 Python
Python实现ElGamal加密算法的示例代码
Jun 19 Python
使用python如何删除同一文件夹下相似的图片
May 07 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的array_diff()函数在处理大数组时的效率问题
2011/11/27 PHP
PH P5.2至5.5、5.6的新增功能详解
2014/07/14 PHP
Yii2实现跨mysql数据库关联查询排序功能代码
2017/02/10 PHP
Yii2框架类自动加载机制实例分析
2018/05/02 PHP
PHP iconv()函数字符编码转换的问题讲解
2019/03/22 PHP
超级简单实现JavaScript MVC 样式框架
2015/03/24 Javascript
基于JavaScript短信验证码如何实现
2016/01/24 Javascript
jquery模拟多级复选框效果的简单实例
2016/06/08 Javascript
js实现数组和对象的深浅拷贝
2017/09/30 Javascript
js实现鼠标移动到图片产生遮罩效果
2017/10/21 Javascript
vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法
2017/11/27 Javascript
Vue的watch和computed方法的使用及区别介绍
2018/09/06 Javascript
使用Vue开发自己的Chrome扩展程序过程详解
2019/06/21 Javascript
layui+SSM的数据表的增删改实例(利用弹框添加、修改)
2019/09/27 Javascript
JS实现网页端猜数字小游戏
2020/03/06 Javascript
vue项目接口域名动态获取操作
2020/08/13 Javascript
在vue项目中引用Antv G2,以饼图为例讲解
2020/10/28 Javascript
在Django框架中伪造捕捉到的URLconf值的方法
2015/07/18 Python
Python中__repr__和__str__区别详解
2019/11/07 Python
python创建学生管理系统
2019/11/22 Python
如何将你的应用迁移到Python3的三个步骤
2019/12/22 Python
浅谈pytorch、cuda、python的版本对齐问题
2020/01/15 Python
Django 后台带有字典的列表数据与页面js交互实例
2020/04/03 Python
移动端HTML5 input常见问题(小结)
2020/09/28 HTML / CSS
英国领先的亚洲旅游专家:Wendy Wu Tours
2018/01/21 全球购物
定制别致的瑜伽垫:Sugarmat
2019/06/21 全球购物
介绍java中初始化块的使用
2012/09/11 面试题
亮化工程实施方案
2014/03/17 职场文书
乡镇党建工作汇报材料
2014/08/14 职场文书
2014年学生会工作总结
2014/11/07 职场文书
社区工作者个人总结
2015/02/28 职场文书
贫民窟的百万富翁观后感
2015/06/09 职场文书
工作证明格式范文
2015/06/15 职场文书
浅谈如何保证Mysql主从一致
2022/03/13 MySQL
使用Python拟合函数曲线
2022/04/14 Python
MySQL导致索引失效的几种情况
2022/06/25 MySQL