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 相关文章推荐
Python2.5/2.6实用教程 入门基础篇
Nov 29 Python
跟老齐学Python之有点简约的元组
Sep 24 Python
Python 模块EasyGui详细介绍
Feb 19 Python
Python内存管理方式和垃圾回收算法解析
Nov 11 Python
python实现下载pop3邮件保存到本地
Jun 19 Python
Django框架视图函数设计示例
Jul 29 Python
python join方法使用详解
Jul 30 Python
django解决订单并发问题【推荐】
Jul 31 Python
Django的CVB实例详解
Feb 10 Python
Python中文分词库jieba,pkusegwg性能准确度比较
Feb 11 Python
使用Python爬取弹出窗口信息的实例
Mar 14 Python
浅谈对python中if、elif、else的误解
Aug 20 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
模板引擎正则表达式调试小技巧
2011/07/20 PHP
使用AOP改善javascript代码
2015/05/01 Javascript
AngularJS中实现用户访问的身份认证和表单验证功能
2016/04/21 Javascript
关于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法
2016/06/30 Javascript
基于angularjs实现图片放大镜效果
2016/08/31 Javascript
VueJS全面解析
2016/11/10 Javascript
js仿iphone秒表功能 计算平均数
2017/01/11 Javascript
微信小程序中子页面向父页面传值实例详解
2017/03/20 Javascript
angular2+node.js express打包部署的实战
2017/07/27 Javascript
JavaScrip数组删除特定元素的几种方法总结
2017/09/06 Javascript
详解webpack之图片引入-增强的file-loader:url-loader
2018/10/08 Javascript
vue cli 3.x 项目部署到 github pages的方法
2019/04/17 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
2019/07/04 Javascript
Jquery属性的获取/设置及样式添加/删除操作技巧分析
2019/12/23 jQuery
浅谈Vue2.4.0 $attrs与inheritAttrs的具体使用
2020/03/08 Javascript
解决vuecli3中img src 的引入问题
2020/08/04 Javascript
[48:37]EG vs OG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python操作ie登陆土豆网的方法
2015/05/09 Python
python爬虫中get和post方法介绍以及cookie作用
2018/02/08 Python
Python获取指定字符前面的所有字符方法
2018/05/02 Python
PyCharm配置mongo插件的方法
2018/11/30 Python
在macOS上搭建python环境的实现方法
2019/08/13 Python
python自动化测试无法启动谷歌浏览器问题
2019/10/10 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
2019/10/12 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
2020/02/05 Python
Python异常原理及异常捕捉实现过程解析
2020/03/25 Python
Python实现扫码工具的示例代码
2020/10/09 Python
2013英文求职信模板范文
2013/11/15 职场文书
英语自荐信范文
2013/12/11 职场文书
珍珠奶茶店创业计划书
2014/01/11 职场文书
食品流通安全承诺书
2014/05/22 职场文书
体育个人工作总结
2015/02/09 职场文书
因公司原因离职的辞职信范文
2015/05/12 职场文书
本科毕业论文致谢怎么写
2015/05/14 职场文书
描述鲁迅的名言整理,一生受用
2019/08/08 职场文书
原生JS实现飞机大战小游戏
2021/06/09 Javascript