Django高级扩展之Paginator分页实现

这篇具有很好参考价值的文章主要介绍了Django高级扩展之Paginator分页实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在项目中很常见的一种功能,主要用于大量数据在一页显示过于冗长,分为一页显示多条数据,分隔为多页显示;并常与条件筛选结合使用。

目录

Paginator对象

创建对象

属性

方法

异常

Page对象

创建对象

属性

方法

Paginator与page关系

示例

路由

视图

模板

创建列表页面

设置分页

当前页码不可点击

总结


Paginator对象

创建对象

格式:Paginator(列表,整数)

返回值:返回分页对象

属性

count 对象的总数

num_pages 页面总数

page_range [1,2, 3, 4],页码列表,从1开始。

方法

page(num) 获得一个page对象,如果提供的页码不存在,会抛出”invoalidPage”

异常

involidPage 当向page()传递的是一个无效的页码时抛出

pageNotAnIntrger 当向page()传递的不是一个整数时抛出

emptyPage 当向page()传递一个有效值,但是该页面没有数据时抛出

Page对象

创建对象

Pageinator对象的page()方法返回得到page对象。不需要手动创建。

属性

object_list 当前页上所有数据(对象)的列表

number 当前页的页码值

Paginator 当前page对象关联的paginator对象

方法

has_next() 判断是否有下一页,如果有返回True

has_previouts() 判断是否有上一页,如果有返回True

has_other_pages 判断是否有上一页或下一页,如果有返回True

next_page_number() 返回下一页的页码,如果下一页不存在抛出invalidPage异常

previous_page_number() 返回上一页的页码,如果下一页不存在抛出invalidPage异常

len() 返回当前页的数据(对象)个数

Paginator与page关系

Django高级扩展之Paginator分页实现

1.获取班级所有数据记录

2.传递数据集和每页2条给Paginator对象

3.Page对象根据当前分页页码请求相应记录数据

示例

看过上面的概念后,开始实际操作,还是通过完整的MTV来演示。

路由

设置分页列表路由,增加一个页码参数设置。

urlpatterns = [
    path(r'grade_list/<int:num>', views.grade_list, name='grade_list'),
]

视图

获取班级列表数据,做分页处理,赋值模板。

from django.core.paginator import Paginator


def grade_list(request, num):

    """ 班级分页列表 """

    # 所有班级记录列表
    gradeList = Grades.objects.all()

    # 实例化Paginator 每页显示2条
    paginator = Paginator(gradeList, 2)

    # 获取当前页码数据
    res = paginator.page(num)

    return render(request, 'myapp/gradeList.html', {'res': res})

模板

创建列表页面

内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>班级分页列表</title>
</head>
<body>
    {# 列表内容 #}
    <ul>
        {% for item in res %}
        <li>{{item.name}}</li>
        {% endfor %}
    </ul>
</body>
</html>

设置分页

在班级列表下,增加列表页码。

{# 设置分页页码 #}
<ul>
    {% for index in res.paginator.page_range %}
    <li><a href="{% url 'myapp:grade_list' index %}">{{index}}</a></li>
    {% endfor %}
</ul>

当前页码不可点击

在循环中通过判断分页的当前页码字段,设置当前页码不可点击。

{# 设置分页页码 #}
<ul>
    {% for index in res.paginator.page_range %}
        {% if res.number == index %}
            <li>{{index}}</li>
        {% else %}
            <li><a href="{% url 'myapp:grade_list' index %}">{{index}}</a></li>
        {% endif %}
    {% endfor %}
</ul>

总结

分页的实现就是把封装好的功能,通过对外的入口,传递相应参数就可调用;

实际开发中易于操作方便我们的调用,节省时间。

Django分页原理:获取所有符合条件数据,然后实例化分页对象,最后通过分页对象获取分页数据,返回响应和数据。文章来源地址https://www.toymoban.com/news/detail-501691.html

到了这里,关于Django高级扩展之Paginator分页实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Django高级扩展之中间件

    Django高级扩展之中间件

    中间件是Django请求/响应处理的钩子框架。它是一个轻量级的、低级的“插件”系统,用于全局改变Django的输入或输出。每个中间件组件负责实现一些特定的功能。例如,Django包含一个中间件组件AuthenticationMiddleware,它使用会话将用户与请求关联起来。 目录 方法介绍 __init

    2024年02月10日
    浏览(9)
  • Django高级扩展之系统后台使用celery

    Django高级扩展之系统后台使用celery

    如果我们在系统后台想某日某时执行某个任务,或者每隔一段时间执行某个任务,可以使用celery来完成。 目录 安装 安装celery 安装django_celery_beat celery配置 注册应用 celery配置 修改__init__.py 表迁移 执行迁移 控制台运行截图 新增数据表 安装django-celery-results 执行命令 注册应用

    2024年02月11日
    浏览(15)
  • Django高级扩展之静态文件和ajax使用

    Django高级扩展之静态文件和ajax使用

    目录 使用静态文件 创建静态文件目录 Settings.py配置 创建css文件 路由与视图 设置路由 视图 模板使用静态文件 调用css 调用js 调用图片 优化路径 加载标签 修改文件路径 修改图片路径 修改js路径 修改css路径 使用Ajax 应用场景 示例 路由 视图 模板 Javascript 总结 css、js、图片、

    2024年02月09日
    浏览(44)
  • Django和jQuery,实现Ajax表格数据分页展示

    Django和jQuery,实现Ajax表格数据分页展示

    当存在重新请求接口才能返回数据的功能时,若页面的内容很长,每次点击一个功能,页面又回到了顶部,对于用户的体验感不太友好,我们希望当用户点击这类的功能时,能直接加载到数据,请求后端的操作不会呈现在前端,给用户一种无感知的状态。 若希望在不重新加载

    2024年02月08日
    浏览(8)
  • python在Django中,如何使用MySQL数据库进行分页怎么实现

    在Django中,使用MySQL数据库进行分页是一个相对简单的任务。Django的ORM提供了内置的分页功能,你只需要使用Paginator类即可。以下是一个基本的示例,展示了如何在Django中使用MySQL进行分页: 首先,确保你已经安装了Django和MySQL,并且已经配置了Django项目以使用MySQL数据库。

    2024年04月29日
    浏览(10)
  • django进阶-分页

    定义:         Django 提供Paginator类可以方便的实现分页功能         Paginator类位于django.core.paginator         对象的构造方法         paginator = Paginator(object_list,per_page)         参数                 object_list        需要分页的对象                 p

    2024年02月14日
    浏览(12)
  • django处理分页

    django处理分页

    当数据库量比较大的时候一定要分页查询的 在django中操作数据库进行分页 这个分页插件要实现的是如下效果,当前页和前5页,后5页,上一页和下一页,还有首页和尾页 在app01下创建一个分页的的工具类,pagination.py pagination.py的内容: 在初始化函数中,需要的参数有 reques

    2024年02月14日
    浏览(14)
  • django--分页功能

    Django 提供了强大的分页功能,可以轻松地在视图中实现分页。 在视图中使用分页: 在模板中显示分页: 这个模板中的分页导航演示了如何在模板中显示分页链接。它使用 data 对象中的信息,如 has_previous、previous_page_number、number、num_pages 等来生成分页导航链接。

    2024年02月04日
    浏览(11)
  • 【SpringBoot篇】分页查询 | 扩展SpringMvc的消息转换器

    【SpringBoot篇】分页查询 | 扩展SpringMvc的消息转换器

    做了几个项目,发现在这几个项目里面,都实现了 分页查询 效果,所以就总结一下,方便学习 我们 基于黑马程序员的苍穹外卖 来讲解分页查询的要点 分页查询是指将大量数据按照固定大小的页进行切分,每次查询只返回一页数据,通过不断翻页来获取全部数据。 Result.j

    2024年02月03日
    浏览(12)
  • 【代码】表格封装 + 高级查询 + 搜索 +分页器 (极简)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包