Python APIView分页-DRF
我在使用DRF的APIView创建分页时遇到问题。我在一些地方看到,使用APIView进行分页并不是那么简单,下面的代码是根据搜索中的一些结果生成的,但是,我仍然有麻烦。其中之一是,我不知道如何传递每个请求的最小结果数。另一个原因是页码没有出现,或者后面有下一页Python APIView分页-DRF,python,pagination,django-rest-framework,Python,Pagination,Django Rest Framework,我在使用DRF的APIView创建分页时遇到问题。我在一些地方看到,使用APIView进行分页并不是那么简单,下面的代码是根据搜索中的一些结果生成的,但是,我仍然有麻烦。其中之一是,我不知道如何传递每个请求的最小结果数。另一个原因是页码没有出现,或者后面有下一页 class MerchantOrders(APIView): authentication_classes = (TokenAuthentication,) permission_classes = (IsAuthenticated,
class MerchantOrders(APIView):
authentication_classes = (TokenAuthentication,)
permission_classes = (IsAuthenticated,)
def get(self, request, pk):
orders = Order.objects.filter(merchant_id=pk)
paginator = LimitOffsetPagination()
result_page = paginator.paginate_queryset(orders, request)
response = ListOrderSerializer(result_page, many=True)
return Response(response.data)
这是一个回报的例子
[
{
"product": {
"id": 4,
"name": "Blusa #889",
"barcode": "8880",
"description": "Maecenas vestibulum imperdiet dapibus. Proin semper tortor lectus, nec lacinia felis fringilla et."
},
"price": "16.00",
"is_ative": true
},
{
"product": {
"id": 5,
"name": "Blusa #915",
"barcode": "4238",
"description": "Donec euismod pulvinar condimentum."
},
"price": "12.00",
"is_ative": true
}
]
我不知道这是否正常,因为我使用了LimitOffsetPagination,或者我做得不对。如果您有更好的使用APIView分页的解决方案,请随时与我分享。Django REST框架源代码是您的朋友。 在您的情况下,您缺少一些部件,如您可以从以下列表中看到的:
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
page = self.paginate_queryset(queryset)
if page is not None:
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)