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脚本将绝对url替换为相对url的教程
Apr 24 Python
python实现向ppt文件里插入新幻灯片页面的方法
Apr 28 Python
python访问抓取网页常用命令总结
Apr 11 Python
python中闭包Closure函数作为返回值的方法示例
Dec 17 Python
pandas对指定列进行填充的方法
Apr 11 Python
Windows上使用Python增加或删除权限的方法
Apr 24 Python
对TensorFlow的assign赋值用法详解
Jul 30 Python
python的常用模块之collections模块详解
Dec 06 Python
Django组件之cookie与session的使用方法
Jan 10 Python
pycharm下pyqt4安装及环境配置的教程
Apr 24 Python
pycharm激活方法到2099年(激活流程)
Sep 22 Python
python Cartopy的基础使用详解
Nov 01 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 学习路线与时间表
2010/02/21 PHP
解析func_num_args与func_get_args函数的使用
2013/06/24 PHP
php统计文章排行示例
2014/03/04 PHP
php将12小时制转换成24小时制的方法
2015/03/31 PHP
PHP实现二维数组按某列进行排序的方法
2016/11/18 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
PHP基于回溯算法解决n皇后问题的方法示例
2017/11/07 PHP
PHP两个n位的二进制整数相加问题的解决
2018/08/26 PHP
Jquery实现简单的动画效果代码
2012/03/18 Javascript
checkbox设置复选框的只读效果不让用户勾选
2013/08/12 Javascript
jquery toolbar与网页浮动工具条具体实现代码
2014/01/12 Javascript
jquery实现的鼠标下拉滚动置顶效果
2014/07/24 Javascript
显示今天的日期js代码(阳历和农历)
2014/09/30 Javascript
AngularJS基础知识
2014/12/21 Javascript
JavaScript 学习笔记之基础中的基础
2015/01/13 Javascript
使用jquery清空、复位整个输入域
2015/04/02 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
2016/11/22 Javascript
使用jQuery操作DOM的方法小结
2017/02/27 Javascript
Vue 仿QQ左滑删除组件功能
2018/03/12 Javascript
10个最受欢迎的 JavaScript框架(推荐)
2019/04/24 Javascript
layer.open提交子页面的form和layedit文本编辑内容的方法
2019/09/27 Javascript
[59:00]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第一场 3月7日
2021/03/11 DOTA
Python中几种操作字符串的方法的介绍
2015/04/09 Python
python使用正则表达式的search()函数实现指定位置搜索功能
2017/11/10 Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
2018/01/09 Python
Python对List中的元素排序的方法
2018/04/01 Python
python 高效去重复 支持GB级别大文件的示例代码
2018/11/08 Python
python3.7 使用pymssql往sqlserver插入数据的方法
2019/07/08 Python
基于Django统计博客文章阅读量
2019/10/29 Python
如何减少垃圾回收让内存更加有效使用
2013/10/18 面试题
是否有自动比较结构的方法
2015/06/03 面试题
使用索引(Index)有哪些需要考虑的因素
2016/10/19 面试题
艺术设计专业个人求职信
2013/09/21 职场文书
庆六一活动总结
2014/08/29 职场文书
公司新人试用期自我评价
2014/09/17 职场文书
k8s部署redis cluster集群的实现
2021/06/24 Redis