django Paginator分页构造器的使用

本文介绍了如何在Django中使用Paginator类进行分页操作,包括Paginator对象的构造、获取指定页面内容以及page和get_page方法的区别。
摘要由CSDN通过智能技术生成

django Paginator分页构造器的使用

首先导入Paginator类

from django.core.paginator import Paginator

然后构造分页器对象

    articles = Article.objects.all()
    paginator = Paginator(articles, per_page=page_size)

获取指定页面

paginator.page(number)
paginator.get_page(number)

page(number)

获取指定页面的内容,此方法会验证number的类型和数值范围,如果不符合要求会直接抛出异常,所以使用此方法一定要做异常的处理

get_page(number)

此方法也是获取指定页面内容,但是不同的是,此方法已经做了异常的处理,如果传入的参数不是数值类型,会直接返回第一页,如果数值超过了分页的范围,会返回最后一页

查看源码
    def get\_page(self, number):
        """
 Return a valid page, even if the page argument isn't a number or isn't
 in range.
 """
        try:
            number = self.validate_number(number)
        except PageNotAnInteger:
            number = 1
        except EmptyPage:
            number = self.num_pages
        return self.page(number)

    def page(self, number):
        """Return a Page object for the given 1-based page number."""
        number = self.validate_number(number)
        bottom = (number - 1) \* self.per_page
        top = bottom + self.per_page
        if top + self.orphans >= self.count:
            top = self.count
        return self._get_page(self.object_list[bottom:top], number, self)

获取数据

使用pageget_page得到的page对象是一个可迭代对象,直接从page中迭代得到我们的模型对象,然后按照操作模型的方法处理即可,我这里是给模型定义了to_dict()方法

    data = []
    for article in page:
        data.append(article.to_dict())

完整代码

"""
公共返回类,使用静态方法封装成功与失败的响应
"""
class Response:

    @staticmethod
    def success(data: object = None,msg: str = '') -> JsonResponse:
        res_dic = {
            "code": 1,
            "msg": msg
        }
        if data:
 **自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**

![img](https://img-blog.csdnimg.cn/img_convert/cfb75560dbc782b935e0f3d448e147a9.png)

![img](https://img-blog.csdnimg.cn/img_convert/cd6aab19aed818c1d674d3dffd4cc20d.png)

![img](https://img-blog.csdnimg.cn/img_convert/24ca94759542fb1fca0f1a20713fc033.png)

![img](https://img-blog.csdnimg.cn/img_convert/0a1492a1bdd9306ad6edd90bb0b7a9b8.png)

![img](https://img-blog.csdnimg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png)

![img](https://img-blog.csdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)**

开发知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)**

<img src="https://img-community.csdnimg.cn/images/fd6ebf0d450a4dbea7428752dc7ffd34.jpg" alt="img" style="zoom:50%;" />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值