我是Django的初学者,我编写了一个基于类的混合API视图。其功能很简单,即获取给定id.Im的数据,粘贴下面的代码。
class GenericAPi(generics.GenericAPIView,mixins.ListModelMixin,mixins.RetrieveModelMixin):
serializer_class=ArticleSerializer
queryset=Article.objects.all()
lookup_field="id"
def get(self,request,id):
if id:
data=self.retrieve(request)
return Response({"data":data.data,"status":data.status_code})
else:
return self.list(request)这是我得到的回应
{"id":5、“标题”:“loream”、“作者”:“me”}
然后,我导航到mixin中的检索函数,对响应进行一些更改。
def retrieve(self, request, *args, **kwargs):
print('Retrieving')
instance = self.get_object()
serializer = self.get_serializer(instance)
return Response({"result":serializer.data})然后我调用了API,但仍然得到了相同的响应。如何自定义检索函数本身中的响应。
我需要这样的回应。
{“结果”:{“id”:5,“标题”:“loream”,“作者”:“ipsum”}
发布于 2022-05-29 04:35:58
我认为您不必在retrieve中自定义RetrieveModelMixin函数。
class GenericAPi(generics.GenericAPIView,mixins.ListModelMixin,mixins.RetrieveModelMixin):
serializer_class=ArticleSerializer
queryset=Article.objects.all()
lookup_field="id"
def get(self, request, id):
if id:
try:
article = Article.objects.get(pk = id)
return Response({"result": ArticleSerializer(article).data})
except Article.DoesNotExist:
return Response(status = status.HTTP_404_NOT_FOUND)
return
return self.list(request, *args, **kwargs)https://stackoverflow.com/questions/72418719
复制相似问题