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. 简单配置nginx反向代理,实现跨域请求
  2. R语言广义线性模型Logistic回归模型列线图分析(nomogram)
  3. Apr.2010 Microsoft MVP连任
  4. Discuz!X论坛开发(九)二次开发之Discuz X2 文件目录功能详解
  5. C语言linux getopt_long()函数(命令行解析)(getopt、getopt_long_only)(短选项 -,长选项 --)(option结构体)(optind、optarg变量)
  6. ES6相关特性的整理(变量数据结构)
  7. springboot不会运行gc_SpringBoot项目深度优化和Jvm调优
  8. 如何使用计算机实现fft,快速傅立叶变换(FFT)的计算机实现..doc
  9. 数据结构及算法总结(概述)
  10. Lotus Domino服务器及其应用系统的高级管理(2)
  11. 破解极域电子教室密码
  12. php挑战答题,挑战答题小程序5.3.1开源
  13. Win 10系统怎么确认是否打开了虚拟化
  14. 【Love2d从青铜到王者】第二篇:Love2d详细介绍以及官网安装
  15. linux下设置双系统选项,linux双系统【操作步骤】
  16. ARM Coresight
  17. NVidia GPU 无法调节风扇转速
  18. a-upload文件夹上传
  19. CITA架构与云计算服务
  20. 使用FFmpeg进行mp4与m3u8之间转换

热门文章

  1. Hadoop Day06~MapReduce计算json文件的电影总分
  2. 微信小程序 分享功能
  3. 【翻译练习】指导英语学习者如何阅读
  4. 日本公路管理的基本模式
  5. 数据建模——模型融合
  6. 万字长文:Kubernetes 创建 Pod 时,背后到底发生了什么?
  7. ShellCode生成器
  8. 杂学--变量命名神器CODELF的学习和使用
  9. Intellij IDEA使用经验(八):快速批量替换
  10. KD-2125地下电缆测试仪