【发布时间】:2022-02-07 23:18:05
【问题描述】:
我有一个基于函数的 Django API,如本示例所示:
@api_view(['GET'])
def findData(request):
dataId = request.GET['dataId']
page_query_param = 'page'
page_size = request.GET['page_size']
paginator = PageNumberPagination()
paginator.page_size = page_size
paginator.page_query_param = page_query_param
qry_set = Data.objects.all()
serializer = dataIdSerializer(qry_set, many=True)
theData= serializer.data
return Response(paginator.get_paginated_response(theData))
但我不断收到此错误:
AttributeError: 'PageNumberPagination' object has no attribute 'page'
我试过设置
paginator.page_query_param = page_query_param
但还是同样的问题。请告知如何解决。
谢谢
【问题讨论】:
-
您是否有理由使用普通视图,而不仅仅是 DRF 的
APIView(可以自动处理此问题)? -
其实是的。我正在从 C# rest 移植 API;并且前端 UI(在我的控制之外)基本上是在调用端点 findData。我已经有数据的 ViewSet,但我必须使用 /findData 端点。请告知是否有使用 findData + APIView、ViewSet 或泛型的方法...如果需要,我可以使用所有方法,我只需要使用 UI 的 findData 端点仍然可以工作。谢谢
-
dataId到底在做什么?看起来你“扔掉”了那个变量? -
对不起,它是一个过滤器......我使用 .all 简化了示例,但真正的 qry 应用了一个过滤器(qry 参数)
-
现在看起来你只是对所有
Data对象进行分页,所以一个简单的ListAPIView就足够了。
标签: django django-rest-framework