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)
获取数据
使用page
和get_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/e9f271e140592759321437726b9939fe.png)
![img](https://img-blog.csdnimg.cn/img_convert/a9ffc1c0315ab2e717a45cd18edd3bb7.png)
![img](https://img-blog.csdnimg.cn/img_convert/4268094a95ca5f10b83f6b7b047f7bef.png)
![img](https://img-blog.csdnimg.cn/img_convert/f6b9790af8933822c944dfa4ff4d0d17.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)**
![](https://img-blog.csdnimg.cn/img_convert/efddc3448787a69949e75f018d4c43c0.jpeg)