首页 > 解决方案 > 如何为 DRF 视图集中的每个函数返回自定义消息?

问题描述

我有一个视图集

class JobPostView(viewsets.ModelViewSet):
    permission_classes = [IsAuthenticated]
    serializer_class = JobPostSerializer
    queryset = JobPost

我将如何为每个函数返回自定义消息?例如。如果使用 get 函数,我必须返回带有数据的“成功列出”,对于带有数据的“发布成功”的帖子,同样适用于 put、patch 和 delete。

标签: pythondjangodjango-rest-framework

解决方案


ModelViewSet继承自GenericAPIViewDRF,因此您可以覆盖.list(), .retrieve(), .create(), .update(), .partial_update(), 并.destroy()放置您的自定义逻辑并返回您的自定义Response. 有关详细信息,请参阅DRF 文档

更新: 对于响应中的自定义数据,假设您已经创建了模型的一个实例并有一个输出序列化程序,例如:

output_serializer = CustomerSerializer(instance=instance, many=False, context={'request': request})

您可以添加output_serializer.datadict 并将其发送如下:

return Response(output_serializer.data, status=status.HTTP_201_CREATED)

推荐阅读