Django中分页非常方便,通过Pagination你可以很方便达到分页效果。今天主要说的是基础视图中ListView的分页处理,本质还是依赖与Pagination。

数据模型:models.py

    from django.db import modelsfrom django.contrib.auth.models import User# Create your models here.class Msg(models.Model):title = models.CharField(max_length = 30)content = models.TextField()user = models.ForeignKey(User)ip = models.IPAddressField()datetime = models.DateTimeField(auto_now_add = True)click_count = models.IntegerField(default = 0)

views.py

 from django.views.generic import ListViewfrom msg_board.models import MsgITEMS_PER_PAGE = 1class MsgList(ListView):model = Msg#数据模型context_object_name = 'msg_list'#模板中变量template_name = 'index.html'#模板文件paginate_by = ITEMS_PER_PAGE#一个页面显示的条目

urls.py

urlpatterns = [ re_path(r'^list/(?P<pk>[0-9]+)$', views.MsgListView.as_view(), ),
]

模板:index.html

<html><head><title>msg_board</title><style type="text/css">table{border:3 solid black; border-collapse:collapse}table th, table td{border:2 solid black}</style></head><body><h3>Message:</h3>{% if msg_list %}<table id = "msgs"><tr><th>Title</th><th>Content</th><th>Author</th><th>Ip</th><th>Time</th><th>Click</th></tr>{%for msg in msg_list %}<tr><td>{{msg.title}}</td><td>{{msg.content}}</td><td>{{msg.user}}</td><td>{{msg.ip}}</td><td>{{msg.datetime}}</td><td>{{msg.click_count}}</td></tr>{% endfor%}</table>{% if is_paginated %}<div class="pagination"><span class="page-links">{% if page_obj.has_previous %}<a href="/mysite?page={{ page_obj.previous_page_number }}">上一页</a>{% endif %}{% if page_obj.has_next %}<a href="/mysite?page={{ page_obj.next_page_number }}">下一页</a>{% endif %}<span class="page-current">第{{ page_obj.number }}页 ,工{{ page_obj.paginator.num_pages }}页。</span></span></div>{%endif%}{% else %}<p>No msgs !!!</p>{% endif %}</body></html>
或者
<html><head><title>msg_board</title><style type="text/css">table{border:3 solid black; border-collapse:collapse}table th, table td{border:2 solid black}</style></head><body><h3>Message:</h3>{% if msg_list %}<table id = "msgs"><tr><th>Title</th><th>Content</th><th>Author</th><th>Ip</th><th>Time</th><th>Click</th></tr>{%for msg in msg_list %}<tr><td>{{msg.title}}</td><td>{{msg.content}}</td><td>{{msg.user}}</td><td>{{msg.ip}}</td><td>{{msg.datetime}}</td><td>{{msg.click_count}}</td></tr>{% endfor%}</table>{% if is_paginated %}<nav aria-label="..."><ul class="pagination justify-content-center">{% if page_obj.has_previous %}<li class="page-item "><a class="page-link" href="{{ request.path }}?page=1" tabindex="-1" aria-label="Previous"><span aria-hidden="true"  >&laquo;</span><span class="sr-only">Previous</span></a></li>{% else %}<li class="page-item disabled"><a  class="page-link" href="{{ request.path }}?page=1" > <span aria-hidden="true">&laquo;</span></a></li>{% endif %}{% for i in page_obj.paginator.page_range %}{% if page_obj.number == i %}<li class="page-item active"><a class="page-link"  href="{{ request.path }}?age={{ i }}">{{ i }}</a></li>{% else %}<li class="page-item"><a class="page-link"  href="{{ request.path }}?page={{ i }}">{{ i }}</a></li>{% endif %}{% endfor %}<li class="page-item"><a  class="page-link"> 共{{ page_obj.paginator.num_pages }}页</a></li>{% if page_obj.has_next %}<li class="page-item"><a class="page-link"  href="{{ request.path }}?page={{ page_obj.next_page_number }}"><span aria-hidden="true">&raquo;</span></a></li>{% else %}<li class="page-item" aria-label="Next"><a  class="page-link"> <span aria-hidden="true"  >&raquo;</span></a><span class="sr-only">Next</span></li>{% endif %}</ul></nav>{%endif%}{% else %}<p>No msgs !!!</p>{% endif %}</body></html>

效果图:

page_obj是分页对像实例,这个名字是ListView默认生成的

page_obj的变量:

page_obj.paginator.page_range:所有分页的number,是一个list

page_obj.number:当前分页的页码

page_obj.paginator.num_pages:总分页数,就是一共有多少页

page_obj的方法:

page_obj.has_previous():判断是否有上一页

page_obj.previous_page_number():返回上一页的number

page_obj.has_next():判断是否有下一页

page_obj.next_page_number():返回下一页的number

Django中ListView分页技术相关推荐

  1. django中的分页

    分页在现在的网站应用中是非常用的,在Django 中要实现分页,是一件很简单的事情.使用Paginator,但是这种方法在小数据量,几百条时,可以使用.一旦数据大起来之后,效率就非常低下了.artic ...

  2. MVC4中ajax分页技术实例

    在这之前一直没有写过碰过MVC,更别说ajax,但是项目需要,只好边学边做了,希望跟我一样的朋友也可以看到文章,希望可以应用的到你们的项目中去.好了废话不多说,现在开始动手吧. 前台页面 Index. ...

  3. Django中使用ajax技术概述

    ajax 1.什么是ajax ajax就是在不刷新整个页面的情况下,去更新局部页面的内容(无刷新技术) 2.ajax有什么优点 最大的一点是页面无刷新,在页面内与服务器通信,给用户的体验非常好. 使用 ...

  4. Android中ListView分页加载数据

    熟悉Android的朋友们都知道,不管是微博客户端还是新闻客户端,都离不开列表组件,可以说列表组件是Android数据展现方面最重要的组件,我们今天就要讲一讲列表组件ListView加载数据的相关内容 ...

  5. Django中扩展Paginator实现分页

    Django中已经实现了很多功能,基本上只要我们需要的功能,都能够找到相应的包.要在Django中实现分页显示,只需要简单地使用Paginator就可以实现了. 首先,需要在应用的views.py中添 ...

  6. android listview分页显示,Android应用中使用ListView来分页显示刷新的内容

    点击按钮刷新1.效果如下: 实例如下:  上图的添加数据按钮可以换成一个进度条  因为没有数据所以我加了一个按钮添加到数据库用于测试:一般在服务器拉去数据需要一定的时间,所以可以弄个进度条来提示用户: ...

  7. Django中使用Pagination的分页范例源码

    将做工程过程重要的内容做个珍藏,下面代码内容是关于Django中使用Pagination的分页范例的代码. from django.core.paginator import Paginator ob ...

  8. 如何在 Django REST Framework 中对分页结果过滤和排序?

    作者 | 大江狗  责编 | 张文 来源 | Python Web 与 Django 开发 (ID:Python_Web_Django) 在本篇文章中我们将向你演示如何在 Django REST Fr ...

  9. android开发分页查询,Android开发中实现分页效果的简单步骤

    分页加载在程序开发中是必备的,但是我们实现这个功能并不仅仅为了美观,用户体验也是很重要的,爱站技术频道下面就带大家了解Android开发中实现分页效果的简单步骤,感兴趣的小伙伴们参考看看吧! 具体内容 ...

  10. php ajax mysql 分页查询_基于PHP_MySql_Ajax的分页技术方案

    一.引言 Ajax的全称是AsynchronousJavaScriptAndXML(异步JavaScript和XML),它不是一项新技术,而是很多成熟的技术的集合. 和Applet,Flash相比,A ...

最新文章

  1. RAC环境下的备份与恢复(一)
  2. 2015-05-26
  3. ThreadPoolExecutor里面4种拒绝策略--CallerRunsPolicy
  4. Oracle发布Java 8
  5. Java统计每个大写字母的个数
  6. 编程语言之问:何时该借用,何时该创造?
  7. 033-生产机器扩容
  8. ANTS Memory Profiler - NET内存泄漏分析工具
  9. tomcat反向代理,监控,性能优化详细步骤
  10. PS CC2017安装及破解
  11. Matlab解五次以上方程,大侠帮忙,matlab解方程组 (5个方程,5个未知数)
  12. springBoot启动类报错
  13. 夏天最美丽的就应该是荷花了
  14. HJ107 求解立方根(java详解,二分法详解)
  15. 关于Unicode字符集,将char数组转化成LPCTSTR
  16. 矩阵理论| 基础:线性子空间(非平凡子空间)、空间分解、直和分解
  17. react 项目框架的搭建(一)
  18. 如何创建 Ping app 中的 UIViewController 转换动画?
  19. arcgis定义投影报错
  20. RTL8189ES/ETV/FTV系列模块定频软件操作手册

热门文章

  1. 四川大学计算机网络实验,四川大学计算机网络实验报告
  2. JavaScript 操作 session 方法
  3. 利用向日葵远程控制工具实现远程控制电脑
  4. OTSU算法(大津法—最大类间方差法)原理及实现
  5. MP3音频文件转换成caf格式
  6. 数据库系统概论习题 关系数据库 关系数据库(关系代数表达式)
  7. c语言----斐波那契数列
  8. taxi计费器c语言程序,基于单片机的出租车计费器的设计(附实物图,原理图,程序)...
  9. 用积分法求椭圆周长matlab,MATLAB计算积分
  10. Java实习日记(5)