Chr*_*son 5 django django-rest-framework
当我在我的API上进行GET时,它总是在结果中包含以下内容:
{
"count": 2013,
"next": "http://127.0.0.1:8000/api/items/?page=2",
"previous": null,
"results": [ {...} ... {...} ]
}
Run Code Online (Sandbox Code Playgroud)
如何删除count,next和previous字段,只返回结果中的内容?不过,我仍然希望将结果分页.
我在这里找到了一些东西:Django REST框架:直接显示在GenericView中的结果列表中,但它不起作用.
Ala*_*air 16
覆盖get_paginated_response分页类的方法.
from rest_framework.pagination import PageNumberPagination
class PageNumberPaginationDataOnly(PageNumberPagination):
# Set any other options you want here like page_size
def get_paginated_response(self, data):
return Response(data)
Run Code Online (Sandbox Code Playgroud)
然后在settings.py中,设置DEFAULT_PAGINATION_CLASS为新的分页类.
DEFAULT_PAGINATION_CLASS = 'path.to.PageNumberPaginationDataOnly'
Run Code Online (Sandbox Code Playgroud)
此方法用于分页文档中的示例.
此问题的另一个解决方案是get_pagination_response在views.py 中的每个视图集中重新定义 。这使得您可以动态更改每个视图集。另外,请确保从rest_framework.response 导入Response。
from rest_framework.response import Response
from rest_framework import viewsets
from .models import CustomModel
from .serializers import CustomSerialzer
class CustomViewSet(viewsets.ModelViewSet):
queryset = CustomModel.objects.all()
serializer_class = CustomSerializer
def get_paginated_response(self, data):
return Response(data)
Run Code Online (Sandbox Code Playgroud)
我还发现了这个小宝石:paginator = None只需将它粘贴在视图集上的 serializer_class 下方,它就会取出分页并进行分页,以便您可以在一页上返回所有列表项。但是,如果您有太多记录,可能会存在风险。所以要小心。
| 归档时间: |
|
| 查看次数: |
3662 次 |
| 最近记录: |