有时候前端会按照分页的方式查询数据,例如50条数据,每页展示10条,Django已经给我们提供了分页器,我们只需要调用即可
1.导入模块
from django.core.paginator import Paginator, EmptyPage
2.创建Paginator对象
skus = SKU.objects.filter(category_id=category_id,is_launched=True).order_by(sort)
paginator = Paginator(skus, page_size)
Paginator()需要两个参数,第一个是要分页的对象,第二个是每页多少项
3.查询
获取指定页的子集,若不存在该页则抛EmptyPage异常,若不是整数则抛PageNotAnInteger异常
skus = SKU.objects.filter(category_id=category_id,is_launched=True).order_by(sort)
paginator = Paginator(skus, page_size)
page = 5
try:
# cur_page是skus查询集的子集
cur_page = paginator.page(page)
except EmptyPage as e:
print(e)
return JsonResponse({
'code': 400,'errmsg': '找不到指定页'})
...
paginator.count # 总数量
paginator.num_pages # 总页数