使用DRF进行序列化和分页时,API的输出采用以下格式。
{
"count": 4429,
"next": "http://127.0.0.1:8000/data/component_log/?limit=100&offset=100",
"previous": null,
"results": [{...},{...},{...}]
}
这包括计数,下一个和上一个字段以及结果字段。
仅返回结果数组时,是否可以进行序列化和分页?
例如
[{...},{...},{...}]
class InvoiceSerializer(serializers.ModelSerializer):
class Meta:
model = Invoice
fields = '__all__'
class InvoiceViewSet(viewsets.ModelViewSet,UpdateModelMixin):
queryset = Invoice.objects.all()
serializer_class = InvoiceSerializer
filter_backends = (OrderingFilter,)
无需分页,只需将以下内容添加到REST_FRAMEWORK设置中即可实现这一目标。
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer'
),
}
但这不会保留到分页的请求中。
答案 0 :(得分:2)
使用Custom pagination class作为视图并覆盖get_paginated_response
方法,如下所示:
from rest_framework.response import Response
class CustomPagination(pagination.PageNumberPagination):
def get_paginated_response(self, data):
return Response(data)