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)
    

      

  • 相关阅读:
    Matlab 绘制三维立体图(以地质异常体为例)
    Azure DevOps的variable group实现array和hashtable参数的传递
    Azure DevOps 利用rest api设置variable group
    Azure AADSTS7000215 其中一种问题的解决
    Power BI 实现实时更新Streaming Dataset
    AAD Service Principal获取azure user list (Microsoft Graph API)
    Matlab 沿三维任意方向切割CT图的仿真计算
    Azure Powershell script检测登陆并部署ARM Template
    Azure KeyVault设置策略和自动化添加secrets键值对
    Azure登陆的两种常见方式(user 和 service principal登陆)
  • 原文地址:https://www.cnblogs.com/sch01ar/p/14303237.html
Copyright © 2011-2022 走看看