码迷,mamicode.com
首页 > 其他好文 > 详细

Django内置分页

时间:2021-06-02 18:23:56      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:comment   except   过滤   客户   记录   压力   类对象   获取   列表   

  • 作用:数据库有几千万条数据,这些数据需要展示,我们不可能直接从数据库把数据全部读取出来,这样会给内存造成特别大的压力,有可能还会内存溢出,所以我们希望一点一点的取,那展示的时候也是一样的,总是要进行分页显示,我们之前自己都写过分页。

  • 导入分页模块

     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)

Django内置分页

标签:comment   except   过滤   客户   记录   压力   类对象   获取   列表   

原文地址:https://www.cnblogs.com/ziheng8/p/14829929.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!