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高级扩展之celery使用

    Celery是一个简单、灵活、可靠的分布式系统,用于处理大量消息,同时为操作提供维护此类系统所需的工具。是一个专注于实时处理的任务队列,同时还支持任务调度。 目录 应用场景 问题 解决 celery架构图 安装 配置celery Settings.py配置 创建celery 修改__init__ 开启celery 异步执行

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

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

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

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

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

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

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

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

    2024年04月29日
    浏览(47)
  • django处理分页

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

    2024年02月14日
    浏览(40)
  • django进阶-分页

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

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

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

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

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

    2024年02月03日
    浏览(48)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包