Django内置分页
作者:互联网
-
作用:数据库有几千万条数据,这些数据需要展示,我们不可能直接从数据库把数据全部读取出来,这样会给内存造成特别大的压力,有可能还会内存溢出,所以我们希望一点一点的取,那展示的时候也是一样的,总是要进行分页显示,我们之前自己都写过分页。
-
导入分页模块
from django.core.paginator import Paginator
获取queryset对象
goods_list = Goods.objects.all().order_by('id')
实例化分页类对象
paginator = Paginator(goods_list, 2)
Paginator类对象的属性
序号 | 属性名 | 说明 |
---|---|---|
1 | num_pages | 返回分页之后的总页数 |
2 | page_range | 返回分页后的页码列表 |
3 | count | 需要分页的总记录数 |
Paginator类对象的方法
序号 | 方法名 | 说明 |
---|---|---|
1 | get_page(self, number) | 返回第number页的page类实例对象 |
Page实例对象的属性
序号 | 属性名 | 说明 |
---|---|---|
1 | number | 返回当前页的页码 |
2 | object_list | 返回当前页的数据查询集 |
3 | paginator | 返回对应的Paginator类对象 |
分页功能实现
from rest_framework.response import Response
from rest_framework.views import APIView
from school.serializers import *
class StudentsAPIView(APIView):
def get(self, request):
page_number = request.GET.get('page', 1) # 获取客户端发送的页码,默认为1
page_size = request.GET.get('page_size', 2) # 获取客户端发送的每页数量,默认为1
try:
page_number = int(page_number) # 处理页码, 过滤无效的数据
except:
page_number = 1
goods_set = Student.objects.all().order_by('id')
paginator = Paginator(goods_set, page_size) # 得到分页器对象
page = paginator.get_page(page_number) # 得到当前页码对象
ser = StudentSerializer(page.object_list, many=True)
return Response(ser.data)
标签:Paginator,paginator,内置,分页,get,number,Django,page 来源: https://www.cnblogs.com/ziheng8/p/14829929.html