Django rest framework 不带序列化程序的分页APIView(DRF)
我正在编写一个SAMLLAPI,以从数据库中获取(仅获取)数据Django rest framework 不带序列化程序的分页APIView(DRF),django-rest-framework,django-pagination,Django Rest Framework,Django Pagination,我正在编写一个SAMLLAPI,以从数据库中获取(仅获取)数据 我使用的是没有ModelViewset的APIView,因为Resest很复杂,有很多聚合,所以直接SQL请求比django ORM更快。 我直接将SQL响应转换为JSON,而不使用django序列化程序。 我的问题是:如果不使用 page = self.paginate_queryset(queryset) if page is not None: serializer = self.get_seriali
我使用的是没有ModelViewset的APIView,因为Resest很复杂,有很多聚合,所以直接SQL请求比django ORM更快。
我直接将SQL响应转换为JSON,而不使用django序列化程序。
我的问题是:如果不使用
page = self.paginate_queryset(queryset)
if page is not None:
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
我的代码示例:
from rest_framework.views import APIView
from rest_framework.exceptions import PermissionDenied
from rest_framework.response import Response
from apps.scholl.api import SQL_REQUEST
from django.db import connection
class NamesView(APIView):
def get(self, request):
filters = request.data.pop('filters', None)
with connection.cursor() as cursor:
sql_request = SQL_REQUEST.format(filters)
cursor.execute(sql_request)
fields_to_show = [f.name for f in cursor.description]
values = cursor.fetchall()
json_res = {}
for key in fields_to_show:
json_resp[f]= []
for index, value in enumerate(values):
if not json_resp.get(fields_to_show[index]):
json_resp[fields_to_show[index]] = []
json_resp[fields_to_show[index]}.append(value)
else:
json_resp[fields_to_show[index]}.append(value)
return Response(json_res)