zoukankan      html  css  js  c++  java
  • DRF

    可以在 settings.py 中设置每页的大小

    REST_FRAMEWORK = {
        "PAGE_SIZE": 2,  # 每页显示 2 条内容
    }
    

    views.py:

    from rest_framework import serializers
    from rest_framework.pagination import LimitOffsetPagination
    from rest_framework.response import Response
    from drf import models
    
    
    class PagerSerializer(serializers.ModelSerializer):
        class Meta:
            model = models.Role
            fields = "__all__"
    
    
    class PagerView(APIView):
        def get(self, request, *args, **kwargs):
            # 获取 Role 表中的所有数据
            role_obj = models.Role.objects.all()
            # 创建分页对象
            page_obj = LimitOffsetPagination()
            # 将从数据库中获取的数据进行分页
            role_page = page_obj.paginate_queryset(
                queryset=role_obj,
                request=request,
                view=self,
            )
            # 对数据序列化
            ser = PagerSerializer(instance=role_page, many=True)
            # 使用 rest framework 的 Response 进行返回
            return Response(ser.data)
            # 使用分页的 response 进行返回
            # return page_obj.get_paginated_response(ser.data)
    

    运行结果:

    其中 offset 是指定每一页第一条数据的偏移,第一个数据的偏移为 0,第二个数据的偏移为 1,以此类推

    limit 是每页显示的数据条数,如果没传该参数,则默认使用 settings.py 中设置的 PAGE_SIZE

    自定义参数:

    from rest_framework import serializers
    from rest_framework.pagination import LimitOffsetPagination
    from rest_framework.response import Response
    from drf import models
    
    
    # 设置参数
    class MyPagination(LimitOffsetPagination):
        default_limit = 2  # 每页的数量,如果没传 limit,就使用这个
        limit_query_param = 'limit'  # 每页数量的参数
        offset_query_param = 'offset'  # 每页第一条数据的偏移
        max_limit = 5  # 每页最多的数量
    
    
    class PagerSerializer(serializers.ModelSerializer):
        class Meta:
            model = models.Role
            fields = "__all__"
    
    
    class PagerView(APIView):
        def get(self, request, *args, **kwargs):
            # 获取 Role 表中的所有数据
            role_obj = models.Role.objects.all()
            # 创建分页对象
            page_obj = MyPagination()
            # 将从数据库中获取的数据进行分页
            role_page = page_obj.paginate_queryset(
                queryset=role_obj,
                request=request,
                view=self,
            )
            # 对数据序列化
            ser = PagerSerializer(instance=role_page, many=True)
            # 使用 rest framework 的 Response 进行返回
            return Response(ser.data)
            # 使用分页的 response 进行返回
            # return page_obj.get_paginated_response(ser.data)
    

      

  • 相关阅读:
    GridView实用示例源码附加导出Excel功能
    在做web项目时经常遇到新闻要上一篇,下一篇
    wpf是什么
    今天发的一些文章是早以前遇到一些小问题,园友别炮轰我哦
    Excel表中的数据导入到数据库中
    WPF指南之XAML概述
    sql 替换字段内的内容及出现的问题
    const 和readonly
    SQL2008报Script failed for Server 'xxxxxx.database.windows.net' (Microsoft.SqlServer.Smo)这样的错误
    新年新气象
  • 原文地址:https://www.cnblogs.com/sch01ar/p/14303237.html
Copyright © 2011-2022 走看看