DRF分页自定义响应,没有模型APIView



你好,我在Django中有一个项目,它对不同的数据库执行几个查询,在几个端点返回它们,为此我使用Pandas和DRF (APIViews)。

当响应很长并且逻辑上服务器内存不足时,问题就出现了,我知道我需要对结果进行分页,但我还没有找到这样做的方法,因为我不使用模型或序列化器,我使用pandas进行原始查询来进行查询。

是否有办法分页结果的方式,我正在做的?

我留下了一些代码片段。

class AffiliateAPIView(APIView):
permission_classes = (IsAuthenticated,)  
def get(self, request):
insurance = self.request.query_params.get('insurance', None)
emergensys_df = pd.read_sql_query(general_attention(insurance), engine())
return Response(emergensys_df.to_dict(orient='records'))

你应该实现一个流响应。Django有StreamingHttpResponse: https://docs.djangoproject.com/en/3.2/ref/request-response/#streaminghttpresponse-objects基本上,您应该执行以下操作:

  • 创建一个生成器,它使用LIMITOFFSETSQL操作符以块方式从数据库中获取数据,处理它,并以块方式返回。
  • 创建并返回StreamingHttpResponse,并像这样将生成器传递给它:return StreamingHttpResponse(your_generator)

最新更新