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 04 Python
使用Protocol Buffers的C语言拓展提速Python程序的示例
Apr 16 Python
浅谈Python单向链表的实现
Dec 24 Python
Python selenium 三种等待方式解读
Sep 15 Python
Python正则表达式如何进行字符串替换实例
Dec 28 Python
python非递归全排列实现方法
Apr 10 Python
Python模块文件结构代码详解
Feb 03 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
Apr 25 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
Nov 15 Python
Python绘制股票移动均线的实例
Aug 24 Python
pytorch实现CNN卷积神经网络
Feb 19 Python
Python torch.flatten()函数案例详解
Aug 30 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
phpmyadmin导入(import)文件限制的解决办法
2009/12/11 PHP
第二章 PHP入门基础之php代码写法
2011/12/30 PHP
thinkphp实现多语言功能(语言包)
2014/03/04 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
PHP获取ttf格式文件字体名的方法示例
2019/03/06 PHP
30个精美的jQuery幻灯片效果插件和教程
2011/08/23 Javascript
关于jQuery参考实例2.0 用jQuery选择元素
2013/04/07 Javascript
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
2014/01/27 Javascript
js中的preventDefault与stopPropagation详解
2014/01/29 Javascript
浅析js绑定事件的常用方法
2016/05/15 Javascript
iframe中使用jquery进行查找的方法【案例分析】
2016/06/17 Javascript
js实现select选择框效果及美化
2016/08/19 Javascript
详谈JS中数组的迭代方法和归并方法
2017/08/11 Javascript
使用mpvue搭建一个初始小程序及项目配置方法
2018/12/03 Javascript
可能被忽略的一些JavaScript数组方法细节
2019/02/28 Javascript
深入理解vue中的slot与slot-scope
2019/04/22 Javascript
详解微信UnionID作用
2019/05/15 Javascript
基于Nuxt.js项目的服务端性能优化与错误检测(容错处理)
2019/10/23 Javascript
python 输出一个两行字符的变量
2009/02/05 Python
举例讲解Django中数据模型访问外键值的方法
2015/07/21 Python
Python基于whois模块简单识别网站域名及所有者的方法
2018/04/23 Python
pandas的连接函数concat()函数的具体使用方法
2019/07/09 Python
python批量处理文件或文件夹
2020/07/28 Python
使用phonegap获取位置信息的实现方法
2017/03/31 HTML / CSS
adidas官方旗舰店:德国运动用品制造商
2017/11/25 全球购物
美国五金商店:Ace Hardware
2018/03/27 全球购物
巴西备受欢迎的服装和生活方式品牌:FARM Rio
2020/02/04 全球购物
酒店管理毕业生自荐信
2013/10/24 职场文书
2014年开学第一课活动方案
2014/03/06 职场文书
党员公开承诺书和承诺事项
2014/03/25 职场文书
艺术教育实施方案
2014/05/03 职场文书
2014大四本科生自我鉴定总结
2014/10/04 职场文书
新生入学欢迎词
2015/01/26 职场文书
Windows安装Anaconda3的方法及使用过程详解
2021/06/11 Python
Nginx配置之禁止指定IP访问
2022/05/02 Servers
windows系统安装配置nginx环境
2022/06/28 Servers