分页器

本文详细介绍了三种常用的分页技术:简单分页、偏移分页和加密分页,并提供了具体的实现方法和步骤,包括参数配置、数据获取及序列化过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单分页(查看第n页,每页显示n条)

使用方法:

1.导入PageNumberPagination类;

2.实例化产生一个对象:page_pagination = PageNumberPagination();

3.需要配置四个参数:page_size,page_query_param,page_size_query_param,max_page_size;

4.调用下面的方法,返回ret数据:

ret = page_pagination.paginate_queryset(book_list, request, self)

5.再序列化,就是序列化返回的数据,就是ret。

属性(参数):

#page_size:控制每页显示条数;

#page_query_param:控制查询第几页的查询参数;(例如:page_query_param='xx',http://127.0.0.1:8000/books/?xx=2  表示查询第二页的数据);

#page_size_query_param:控制每页最大显示的条数;(例如:page_pagination.page_size_query_param='max',http://127.0.0.1:8000/books/?xx=2&max=6   表示查询第二页的数据,每页显示6条);

#max_page_size:控制每页最大显示的条数;(例如:page_pagination.max_page_size=7,http://127.0.0.1:8000/books/?max=1000    最多显示7条)。
from rest_framework.pagination import PageNumberPagination
# 一 基本使用:url=url=http://127.0.0.1:8000/pager/?page=2&size=3,size无效
class  Pager(APIView):
    def get(self,request,*args,**kwargs):
        # 获取所有数据
        ret=models.Book.objects.all()
        # 创建分页对象
        page=PageNumberPagination()
        # 在数据库中获取分页的数据
        page_list=page.paginate_queryset(ret,request,view=self)
        # 对分页进行序列化
        ser=BookSerializer1(instance=page_list,many=True)
        return Response(ser.data)
# 二 自定制 url=http://127.0.0.1:8000/pager/?page=2&size=3
# size=30,无效,最多5条
class Mypage(PageNumberPagination):
    page_size = 2
    page_query_param = 'page'
    # 定制传参
    page_size_query_param = 'size'
    # 最大一页的数据
    max_page_size = 5
class  Pager(APIView):
    def get(self,request,*args,**kwargs):
        # 获取所有数据
        ret=models.Book.objects.all()
        # 创建分页对象
        page=Mypage()
        # 在数据库中获取分页的数据
        page_list=page.paginate_queryset(ret,request,view=self)
        # 对分页进行序列化
        ser=BookSerializer1(instance=page_list,many=True)
        # return Response(ser.data)
        # 这个也是返回Response对象,但是比基本的多了上一页,下一页,和总数据条数(了解即可)
        return page.get_paginated_response(ser.data)

settings.py文件中:

REST_FRAMEWORK = {
    # 每页显示两条
    'PAGE_SIZE':2
}

偏移分页(在第n个位置,向后查看n条数据)

属性(参数):

#default_limit:默认每页显示的条数,默认偏移的数量
    -比如:default_limit=5
    -http://127.0.0.1:8000/books/    就会显示5条数据
#limit_query_param:往后偏移多少条
    -就用默认值:limit
#offset_query_param:标杆值
    -用默认值:offset
#limit_query_param+offset_query_param联合起来用:
    -访问:http://127.0.0.1:8000/books/?limit=1&offset=5  表示:以数据的第5条作为标杆,往后偏移1条
#max_limit:最大偏移的条数(最大取出的条数)
# http://127.0.0.1:8000/pager/?offset=4&limit=3
from rest_framework.pagination import LimitOffsetPagination
# 也可以自定制,同简单分页
class  Pager(APIView):
    def get(self,request,*args,**kwargs):
        # 获取所有数据
        ret=models.Book.objects.all()
        # 创建分页对象
        page=LimitOffsetPagination()
        # 在数据库中获取分页的数据
        page_list=page.paginate_queryset(ret,request,view=self)
        # 对分页进行序列化
        ser=BookSerializer1(instance=page_list,many=True)
        # return page.get_paginated_response(ser.data)
        return Response(ser.data)

加密分页(只能看上一页和下一页,速度快)

属性(参数):

#page_size:每页显示的条数

#cursor_query_param:不需要修改

#ordering:按什么排序

#通过get_paginated_response返回结果中带上一页和下一页的链接地址
from rest_framework.pagination import CursorPagination
# 看源码,是通过sql查询,大于id和小于id
class  Pager(APIView):
    def get(self,request,*args,**kwargs):
        # 获取所有数据
        ret=models.Book.objects.all()
        # 创建分页对象
        page=CursorPagination()
        page.ordering='nid'
        # 在数据库中获取分页的数据
        page_list=page.paginate_queryset(ret,request,view=self)
        # 对分页进行序列化
        ser=BookSerializer1(instance=page_list,many=True)
        # 可以避免页码被猜到
        return page.get_paginated_response(ser.data)

 

转载于:https://www.cnblogs.com/wangke0917/p/10638021.html

内容概要:本文档详细介绍了一个基于MATLAB实现的跨尺度注意力机制(CSA)结合Transformer编码器的多变量时间序列预测项目。项目旨在精准捕捉多尺度时间序列特征,提升多变量时间序列的预测性能,降低模型计算复杂度与训练时间,增强模型的解释性和可视化能力。通过跨尺度注意力机制,模型可以同时捕获局部细节和全局趋势,显著提升预测精度和泛化能力。文档还探讨了项目面临的挑战,如多尺度特征融合、多变量复杂依赖关系、计算资源瓶颈等问题,并提出了相应的解决方案。此外,项目模型架构包括跨尺度注意力机制模块、Transformer编码器层和输出预测层,文档最后提供了部分MATLAB代码示例。 适合人群:具备一定编程基础,尤其是熟悉MATLAB和深度学习的科研人员、工程师和研究生。 使用场景及目标:①需要处理多变量、多尺度时间序列数据的研究和应用场景,如金融市场分析、气象预测、工业设备监控、交通流量预测等;②希望深入了解跨尺度注意力机制和Transformer编码器在时间序列预测中的应用;③希望通过MATLAB实现高效的多变量时间序列预测模型,提升预测精度和模型解释性。 其他说明:此项目不仅提供了一种新的技术路径来处理复杂的时间序列数据,还推动了多领域多变量时间序列应用的创新。文档中的代码示例和详细的模型描述有助于读者快速理解和复现该项目,促进学术和技术交流。建议读者在实践中结合自己的数据集进行调试和优化,以达到最佳的预测效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值