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通过post提交数据的方法
May 06 Python
5个很好的Python面试题问题答案及分析
Jan 19 Python
Python OpenCV 调用摄像头并截图保存功能的实现代码
Jul 02 Python
numpy ndarray 取出满足特定条件的某些行实例
Dec 05 Python
Python中包的用法及安装
Feb 11 Python
python isinstance函数用法详解
Feb 13 Python
对python中return与yield的区别详解
Mar 12 Python
Python sorted排序方法如何实现
Mar 31 Python
python实现密码验证合格程序的思路详解
Jun 01 Python
用OpenCV进行年龄和性别检测的实现示例
Jan 29 Python
OpenCV-Python实现油画效果的实例
Jun 08 Python
Python合并多张图片成PDF
Jun 09 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
合作指挥官:孟斯克
2020/03/16 星际争霸
escape unescape的php下的实现方法
2007/04/27 PHP
ThinkPHP写第一个模块应用
2012/02/20 PHP
php专用数组排序类ArraySortUtil用法实例
2015/04/03 PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
2016/05/13 PHP
PHP中检查isset()和!empty()函数的必要性
2019/02/13 PHP
php+redis实现消息队列功能示例
2019/09/19 PHP
JavaScript网页制作特殊效果用随机数
2007/05/22 Javascript
jQuery AnythingSlider滑动效果插件
2010/02/07 Javascript
仿百度输入框智能提示的js代码
2013/08/22 Javascript
JavaScript语言核心数据类型和变量使用介绍
2013/08/23 Javascript
JS将表单导出成EXCEL的实例代码
2013/11/11 Javascript
快速解决jquery之get缓存问题的最简单方法介绍
2013/12/19 Javascript
文本框(input)获取焦点(onfocus)时样式改变的示例代码
2014/01/10 Javascript
JavaScript设计模式之工厂模式和构造器模式
2015/02/11 Javascript
jQuery选择器源码解读(一):Sizzle方法
2015/03/31 Javascript
js实现基于正则表达式的轻量提示插件
2015/08/29 Javascript
js编写的treeview使用方法
2016/11/11 Javascript
Vue生命周期示例详解
2017/04/12 Javascript
详解angular中的作用域及继承
2017/05/31 Javascript
react-native ListView下拉刷新上拉加载实现代码
2017/08/03 Javascript
JavaScript实现图片拖曳效果
2017/09/08 Javascript
Vue项目自动转换 px 为 rem的实现方法
2018/10/29 Javascript
nodejs中方法和模块用法示例
2018/12/24 NodeJs
Python列表append和+的区别浅析
2015/02/02 Python
python切片及sys.argv[]用法详解
2018/05/25 Python
Python 爬虫的原理
2020/07/30 Python
python 匿名函数与三元运算学习笔记
2020/10/23 Python
英国最大的体育&时尚零售公司:JD Sports
2017/12/13 全球购物
智能电子秤、手表和健康监测仪:Withings(之前为诺基亚健康)
2018/10/30 全球购物
枚举与#define宏的区别
2014/04/30 面试题
综合素质的自我鉴定
2013/10/07 职场文书
军训鉴定表自我鉴定
2014/02/13 职场文书
硕士生工作推荐信
2014/03/07 职场文书
学校运动会简讯
2015/07/20 职场文书
为什么node.js不适合大型项目
2021/04/28 Javascript