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端口扫描系统实现方法
Nov 19 Python
Python中的rfind()方法使用详解
May 19 Python
python3之模块psutil系统性能信息使用
May 30 Python
Django项目中包含多个应用时对url的配置方法
May 30 Python
python将.ppm格式图片转换成.jpg格式文件的方法
Oct 27 Python
Python实现Mysql数据统计及numpy统计函数
Jul 15 Python
关于pytorch中全连接神经网络搭建两种模式详解
Jan 14 Python
Scrapy中如何向Spider传入参数的方法实现
Sep 28 Python
如何用 Python 处理不平衡数据集
Jan 04 Python
python爬虫爬取图片的简单代码
Jan 18 Python
Python制作运行进度条的实现效果(代码运行不无聊)
Feb 24 Python
全网非常详细的pytest配置文件
Jul 15 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中file_exists函数不支持中文名的解决方法
2014/07/26 PHP
接收键盘指令的脚本
2006/06/26 Javascript
js右键菜单效果代码
2007/07/21 Javascript
javascript this用法小结
2008/12/19 Javascript
JS维吉尼亚密码算法实现代码
2010/11/09 Javascript
EasyUI 中 MenuButton 的使用方法
2012/07/14 Javascript
JS获取月的最后一天与JS得到一个月份最大天数的实例代码
2013/12/16 Javascript
iframe父页面获取子页面参数的方法
2014/02/21 Javascript
jquery插件star-rating.js实现星级评分特效
2015/04/15 Javascript
浅谈jQuery中height与width
2015/07/06 Javascript
同步异步动态引入js文件的几种方法总结
2016/09/23 Javascript
Bootstrap面板(Panels)的简单实现代码
2017/03/17 Javascript
Vue 进入/离开动画效果
2017/12/26 Javascript
webpack 3.X学习之多页面打包的方法
2018/09/04 Javascript
Intellij IDEA搭建vue-cli项目的方法步骤
2018/10/20 Javascript
11个教程中不常被提及的JavaScript小技巧(推荐)
2019/04/17 Javascript
js实现简单放大镜效果
2020/03/07 Javascript
JavaScript cookie原理及使用实例
2020/05/08 Javascript
ES6扩展运算符和rest运算符用法实例分析
2020/05/23 Javascript
vue实现表格合并功能
2020/12/01 Vue.js
零基础写python爬虫之使用Scrapy框架编写爬虫
2014/11/07 Python
Python工程师面试题 与Python Web相关
2016/01/14 Python
Python中列表list以及list与数组array的相互转换实现方法
2017/09/22 Python
python3使用SMTP发送HTML格式邮件
2018/06/19 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
2020/01/25 Python
python中四舍五入的正确打开方式
2021/01/18 Python
pandas 按日期范围筛选数据的实现
2021/02/20 Python
企业管理培训感言
2014/01/27 职场文书
金融管理毕业生求职信
2014/03/03 职场文书
含预算的公司户外活动方案
2014/08/16 职场文书
小学生迎国庆演讲稿
2014/09/05 职场文书
山东省召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
人民检察院起诉书
2015/05/20 职场文书
电影建国大业观后感
2015/06/01 职场文书
会计岗位工作总结
2015/08/12 职场文书
MySQL提取JSON字段数据实现查询
2022/04/22 MySQL