📜  在 APIView drf 上分页 (1)

📅  最后修改于: 2023-12-03 15:37:18.141000             🧑  作者: Mango

在APIView上实现分页

介绍

在使用 Django REST framework 进行API开发时,有时需要对返回的数据进行分页处理,以便在数据量很大的情况下减少客户端的负担,提高应用的性能。Django REST framework 良好的支持分页功能,其中APIView是Django REST framework中使用最广泛的一个视图类,这里介绍如何在APIView上实现分页。

步骤
1. 安装所需的Django REST framework

使用pip安装Django REST framework:

pip install djangorestframework
2. 在APIView上添加分页相关配置

在APIView中添加分页相关的配置,Django REST framework提供了多种分页方式,这里以裁剪型分页LimitOffsetPagination为例:

from rest_framework.pagination import LimitOffsetPagination
from rest_framework.response import Response
from rest_framework.views import APIView

class MyAPIView(APIView):
    # 每页返回的数量
    pagination_class = LimitOffsetPagination

    def get(self, request):
        queryset = SomeModel.objects.all()
        page = self.paginate_queryset(queryset)

        if page is not None:
            serializer = SomeModelSerializer(page, many=True)
            return self.get_paginated_response(serializer.data)

        serializer = SomeModelSerializer(queryset, many=True)
        return Response(serializer.data)
3. 测试接口

使用curl或其他HTTP客户端向接口发送请求进行测试,添加offset参数指定起始位置,limit参数指定返回数量:

$ curl -X GET http://localhost:8000/my-api-view?limit=10&offset=20
结论

使用Django REST framework的APIView类,可以很容易地实现分页处理,只需要添加一些简单的配置即可。同时,Django REST framework提供了多种常见的分页方式,如裁剪型分页、游标型分页、页码型分页等,可以根据不同的实际需求选择合适的分页方式。