自定义页码超出页码范围时出错

2024-10-02 08:23:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在尝试创建一个API,它使用django rest框架返回对象列表,其中包含来自url参数的page和limit per page输入,我已经在API视图中使用自定义分页完成了这项工作

class PropertyListPagination(PageNumberPagination):
    page_size = 20
    page_size_query_param = 'page_size'

    def get_paginated_response(self, data):
        return Response({
            'code': 200,
            'data': data
        })

@api_view(['GET'])
def property_list(request):
    if request.method == 'GET':
        paginator = PropertyListPagination()
        queryset = Property.objects.all()
        context = paginator.paginate_queryset(queryset, request)
        serializer = PropertySerializer(context, many=True)
        return paginator.get_paginated_response(serializer.data)

当前,如果一个页面超出范围(例如,如果我只有2个对象,并且我将我的url设置为page=3和page_size=1,那么它应该超出总对象的范围),那么在响应中,它将返回404状态,并且在正文中:

^{pr2}$

有没有办法自定义它返回400状态和下面的json主体?在

{
    "code": 400,
    "error": "Page out of range"
}

谢谢你


Tags: 对象apiurldatasizegetreturnresponse

热门问题