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/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%;" />