Django分页

Django提供了一个类Paginator用于分页,但Paginator并不具体管理具体的页的处理,而是使用Page对象管理具体页面。下面我们以一个具体的例子来说明一下分页的实现

文章模型:

class Articles(models.Model):tid = models.AutoField(primary_key=True)cid = models.ForeignKey('Category', models.DO_NOTHING, db_column='cid', blank=True, null=True)description = models.CharField(max_length=300)title = models.CharField(max_length=255)content = models.CharField(max_length=20000, blank=True, null=True)author = models.CharField(max_length=255, blank=True, null=True)pub_date = models.DateTimeField()replycount = models.IntegerField(blank=True, null=True)hits = models.IntegerField()isdeleted = models.IntegerField()noreply = models.IntegerField(blank=True, null=True)iscreator = models.IntegerField(blank=True, null=True)isrecommend = models.IntegerField(blank=True, null=True)tags = models.CharField(max_length=255, blank=True, null=True)class Meta:db_table = 'articles'

表中数据:

分页器对象

格式: Paginator(<query_set查询集>,每页显示数据的条数)

  • 对象的属性

    count 分页对象的个数

    num_pages 总页数

    page_range 页码的列表

  • 方法

    page(num) 返回page对象 如果给定的页码不存在 则抛出异常

例子代码:

# 需要导入Paginator类
from django.core.paginator import Paginator  pagination = Paginator(articles,10)

page 对象

page对象具体负责每页的处理,包括每页的数据,当前页的页码,是否有上一页或下一页等。

类别 名称 说明
属性 object_list 当前页码上的所有数据
属性 number 当前页码值
属性 paginator 返回Paginator的对象
方法 has_next 是否有下一页
方法 has_previous 是否有上一页
方法 has_other_pages 是否有上一页 或者下一页
方法 next_page_number 返回下一页的页码
方法 previous_page_number 返回上一页的页码
方法 len 返回当前页数据的个数

使用:

# 由分页器对象调用page方法创建,参数是当前页码
pager = pagination.page(page)

具体例子

路由配置(urls.py)

from django.urls import path
from App import views
app_name = "App"
urlpatterns = [#.....path("list/<int:page>/",views.article_list),]

视图(views.py)

# views.py
def article_list(request,page=1):articles = Articles.objects.all()# 实例化分页对象,一页两条记录pagination = Paginator(articles,10)page = pagination.page(page)  #某一页的分页对象return render(request,'userlist.html',locals())

前端页面(list.html)

使用了bootstrap的样式

<!-- 部分代码 -->
<div class="page-box layui-row"><div id="pageItem"><nav aria-label="Page navigation"><ul class="pagination">{# 判断是不是有前一页 #}{% if pager.has_previous %}<li><a href="/list/{{ pager.previous_page_number }}/" aria-label="Previous"><span aria-hidden="true">«</span></a></li>{% else %}{# 如果没有前一页 禁止点击前一页 #}<li class="disabled"><a href="/list/{{ page }}/" aria-label="Previous"><span aria-hidden="true">«</span></a></li>{% endif %}{# 循环生成页码, page_range是一个整数页码列表 #}{% for cur in pagination.page_range %}{# 判断是不是当前页,如果是高亮显示 #}{% if cur == page %}<li class="active"><a href="/list/{{ cur }}/">{{ cur }}</a></li>{% else %}<li><a href="/list/{{ cur }}/">{{ cur }}</a></li>{% endif %}{% endfor %}{# 判断是不是有下一页 #}{% if pager.has_next %}<li><a href="/list/{{ pager.next_page_number }}/" aria-label="Next"><span aria-hidden="true">»</span></a></li>{% else %}<li class="disabled"><a href="/list/{{ page }}/" aria-label="Next"><span aria-hidden="true">»</span></a></li>{% endif %}</ul></nav></div></div>

最终效果:

django分页实现相关推荐

  1. 2019.03.20 mvt,Django分页

    MVT模式 MVT各部分的功能: M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理. V全拼为View,与MVC中的C功能相同,接收请求,进行业务处理,返回响应. T全拼为T ...

  2. 第八篇Django分页

    Django分页 1.复杂版 data = []for i in range(1, 302):tmp = {"id": i, "name": "ale ...

  3. Django 分页查询并返回jsons数据,中文乱码解决方法

    Django 分页查询并返回jsons数据,中文乱码解决方法 参考文章: (1)Django 分页查询并返回jsons数据,中文乱码解决方法 (2)https://www.cnblogs.com/jo ...

  4. django ajax 查询,Django分页和Ajax查询

    在Django中,实现分页以在多个页面上显示查询项目是非常简单的.使用Ajax仅更新实际发生更改的页面位,而不是每次加载整个页面也是非常直接的.但是,当我们将两者结合在一起时,我发现它有点问题.Dja ...

  5. Django分页+增删改查

    Django分页+增删改查 演示 源码下载地址:https://download.csdn.net/download/qq_35622606/87719248 其他小笔记: django-admin. ...

  6. django分页查询

    Django分页查询(整合vue) 一.django部分 在view.py里添加分页查询方法 from django.http import JsonResponse from django.view ...

  7. Django 分页和使用Ajax5.3

    分页 Django提供了一些类实现管理数据分页,这些类位于django/core/paginator.py中 Paginator对象 Paginator(列表,int):返回分页对象,参数为列表数据, ...

  8. Django分页的基本实现办法

    Django自带一个分页模块Pagination,具体的参考官方文档,我在这里简单介绍一下具体的例子,模拟一个常用场景,列出部分的代码出来.场景是这样的:我们有一个blog表,其中有若干条记录,我们要 ...

  9. django分页模块

    前端分页 将所有数据一次性返回给前端页面,再通过js进行分页,对数据库负担比较大. 后端分页 在数据库查询的时候,就查询出指定页的数据,不多查. Article.object.all()[:5] Qu ...

最新文章

  1. 关于jsp和eclipse服务器端的相关配置和JS的区别
  2. 李飞飞最新演讲全文:机器已能“看懂”图像和视频,但我们仍站在人工智能研究的起点
  3. (0089)iOS开发之iOS应用间相互跳转(URL Scheme)
  4. 牛客题霸 NC23 划分链表
  5. 夺命雷公狗---node.js---20之项目的构建在node+express+mongo的博客项目5mongodb在项目中实现添加数据...
  6. 网页益智游戏怎么制作_休息一下,或者:如何使用Java 12制作出色的益智游戏...
  7. Android开发群
  8. OpenCV修养(三)——图像处理(上)
  9. windows c语言 redis,windows上使用VS2012 C++语言调用Redis的解决方案
  10. CISICO 路由器和交换机的基本配置命令
  11. qq浏览器网页翻译_如何通过Edge浏览器调用“谷歌翻译”,将整个网页翻译为中文...
  12. 计算机课题推荐人意见,课题申请推荐人意见怎么写
  13. cmos电路多余输入端能否悬空_CMOS电路不使用的输入端不能悬空
  14. 鼠标按下并移动事件的解决方案
  15. word表格的编辑 计算机应用基础(4)
  16. android mms分析,在Android上解析应用程序/ smil MMS MIME类型
  17. FC5 安装 Xine
  18. 【RL笔记】基于tensorflow实现RL的policy based算法
  19. jwt无状态权限认证(pings-shiro-jwt)
  20. 什么是 Python Launcher?

热门文章

  1. Chtholly Tree (珂朵莉树) ODT
  2. Delfoi CUT 3D切割和精加工工艺离线编程软件丨衡祖仿真
  3. 集合的遍历之迭代器遍历
  4. 前端学习(二)Echarts入门——html实现简单echarts图例
  5. 展现工匠精神的德国“开放数据”国家行动计划
  6. [转]Java字符串转换为日期和时间比较大小
  7. 我个小菜鸡的博客都有人搬运,我都惊呆了——wsdchong
  8. DaZeng:3分钟搞定内网渗透之外网访问指定域名
  9. 苹果系统引导修复工具_苹果方面专家:搭载M1芯片的Mac电脑可引导其它系统 如Debian...
  10. 大数据时代,企业网络安全怎么守护?