zoukankan      html  css  js  c++  java
  • DRF

    settings.py 中设置每页的大小

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

    view.py:

    from rest_framework import serializers
    from rest_framework.pagination import PageNumberPagination
    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 = PageNumberPagination()
            # 将从数据库中获取的数据进行分页
            role_page = page_obj.paginate_queryset(
                queryset=role_obj,
                request=request,
                view=self,
            )
            # 对数据序列化
            ser = PagerSerializer(instance=role_page, many=True)
    
            return Response(ser.data)
    

    运行结果:

    默认的页号参数为 page

    设置更多的参数:

    from rest_framework import serializers
    from rest_framework.pagination import PageNumberPagination
    from rest_framework.response import Response
    from drf import models
    
    
    # 设置参数
    class MyPagination(PageNumberPagination):
        page_size = 2  # 每页的数量
        page_size_query_param = "size"  # 每页数量的参数
        max_page_size = 5  # 每页最多的数量
        page_query_param = "page"  # 页号的参数
    
    
    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)
    

    访问:

    可以在最后用 page 的 response 进行返回

    # 使用 rest framework 的 Response 进行返回
    # return Response(ser.data)
    # 使用分页的 response 进行返回
    return page_obj.get_paginated_response(ser.data)
    

    运行结果:

    显示了数据总数、前一页和后一页的 url

  • 相关阅读:
    QML小例子【QML工程里信号与槽】
    TensorFlow基础笔记(11) conv2D函数
    tensorflow学习笔记(10) mnist格式数据转换为TFrecords
    tensorflow函数学习笔记
    各个层次的gcc警告
    opencv3.2 dnn 图像分割
    ubuntu16.04 安装caffe以及python接口
    linux profileashrcash_profile之间的区别和联系
    ubuntu 16.04 安装pycharm
    Ubuntu下配置samba实现文件夹共享
  • 原文地址:https://www.cnblogs.com/sch01ar/p/14300793.html
Copyright © 2011-2022 走看看