DRF ListAPIView自定义返回不是对象



我正在尝试自定义ListAPIView以返回自定义对象。默认情况下,DRF返回数组中的对象,我只想要一个自定义对象。

class PostDetailApiView(ListAPIView, CreateAPIView):
serializer_class = PostSerializer
permission_classes = [AllowAny]
def get_queryset(self, request, *args, **kwargs):
response = super().get_queryset(request, *args, **kwargs)
return Response({
'status': 200,
'message': 'Post delivered!!',
'data': response.data
})

我收到错误:

lib/python3.7/site-packages/django/template/response.py", line 120, in __iter__
'The response content must be rendered before it can be iterated over.'
**django.template.response.ContentNotRenderedError: The response content must be rendered before it can be iterated over.**
[03/May/2020 02:34:14] "GET /en-us/blog/api/posts/VueJS%20blog%20in%20progress HTTP/1.1" 500 59

当我返回一个空数组时出现错误,例如:

def get_queryset(self):
queryset = []
queryset.append(Post.objects.get(title=self.kwargs["title"]))
return queryset

如何从基于类的视图返回这样的对象?:

{
"status": 200,
"message": "Post created!",
"data": {}
}

谢谢

# You just need to override your class from APIView class and write your custom response
from rest_framework.views import APIView
class PostDetailApiView(APIView):
permission_classes = [AllowAny]
def get(self, request, format=None):
title = request.data.get("title")
post = Post.objects.filter(title=title).values('title')
return Response({
'status': 200,
'message': 'Post delivered!!',
'data': list(post)
})

最新更新