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操作MySQL的一些基本方法
Aug 16 Python
pandas把dataframe转成Series,改变列中值的类型方法
Apr 10 Python
python cs架构实现简单文件传输
Mar 20 Python
Python爬取成语接龙类网站
Oct 19 Python
Python 控制终端输出文字的实例
Jul 12 Python
python打印直角三角形与等腰三角形实例代码
Oct 20 Python
python IDLE添加行号显示教程
Apr 25 Python
Python实现汇率转换操作
May 03 Python
Python破解极验滑动验证码详细步骤
May 21 Python
Python入门学习之类的相关知识总结
May 25 Python
Python List remove()实例用法详解
Aug 02 Python
Appium中scroll和drag_and_drop根据元素位置滑动
Feb 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页面间传递值和保持值的方法
2016/08/24 PHP
PHP使用ActiveMQ实例
2018/02/05 PHP
ExtJS GTGrid 简单用户管理
2009/07/01 Javascript
JavaScript中获取高度和宽度函数总结
2014/10/08 Javascript
jquery+正则实现统一的表单验证
2015/09/20 Javascript
JS实现网页游戏中滑块响应鼠标点击移动效果
2015/10/19 Javascript
js实现获取div坐标的方法
2015/11/16 Javascript
谈一谈javascript中继承的多种方式
2016/02/19 Javascript
基于Vue过渡状态实例讲解
2017/09/14 Javascript
Vue-cli-webpack搭建斗鱼直播步骤详解
2017/11/17 Javascript
详解vue-meta如何让你更优雅的管理头部标签
2018/01/18 Javascript
vue中手机号,邮箱正则验证以及60s发送验证码的实例
2018/03/16 Javascript
详解React-Router中Url参数改变页面不刷新的解决办法
2018/05/08 Javascript
微信小程序页面传多个参数跳转页面的实现方法
2019/05/17 Javascript
Vue 3.x+axios跨域方案的踩坑指南
2019/07/04 Javascript
echarts大屏字体自适应的方法步骤
2019/07/12 Javascript
使用Python脚本在Linux下实现部分Bash Shell的教程
2015/04/17 Python
Python中property函数用法实例分析
2018/06/04 Python
python环形单链表的约瑟夫问题详解
2018/09/27 Python
Python Django的安装配置教程图文详解
2019/07/17 Python
基于python实现语音录入识别代码实例
2020/01/17 Python
PYQT5 vscode联合操作qtdesigner的方法
2020/03/24 Python
pytorch  网络参数 weight bias 初始化详解
2020/06/24 Python
德国家具折扣店:POCO
2020/02/28 全球购物
高三英语教学反思
2014/01/13 职场文书
大学毕业自我鉴定范文
2014/02/03 职场文书
绩效管理实施方案
2014/03/19 职场文书
教师党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
债务纠纷委托书范本
2014/10/14 职场文书
2015年财务人员工作总结
2015/04/10 职场文书
休假证明书
2015/06/24 职场文书
2016护理专业求职自荐书
2016/01/28 职场文书
2016年学生会感恩节活动总结
2016/04/01 职场文书
2016年质量月活动总结报告
2016/04/05 职场文书
sql时间段切分实现每隔x分钟出一份高速门架车流量
2022/02/28 SQL Server
项目中Nginx多级代理是如何获取客户端的真实IP地址
2022/05/30 Servers