Django rest framework 在Django Rest框架中重写POST的响应

Django rest framework 在Django Rest框架中重写POST的响应,django-rest-framework,django-generic-views,Django Rest Framework,Django Generic Views,我正在使用Django Rest框架的泛型(Generics.ListCreateAPIView),当我发出POST请求时,我会得到一个Http代码(200/400/.etc.)的响应和一个显示发布数据的JSON,我需要知道如何覆盖响应以获得自定义响应 注意,我使用 def perform_create(self,serializer): return Response(<my response>) def perform_create(自、序列化程序):

我正在使用Django Rest框架的泛型(Generics.ListCreateAPIView),当我发出POST请求时,我会得到一个Http代码(200/400/.etc.)的响应和一个显示发布数据的JSON,我需要知道如何覆盖响应以获得自定义响应

注意,我使用

    def perform_create(self,serializer):
        return Response(<my response>)
def perform_create(自、序列化程序):
返回响应()

要覆盖POST请求处理,但仍然得到相同的响应,则忽略来自
perform\u create
的响应。
您可能希望使用as-example覆盖
create
方法,我应该使用mixin而不是泛型,还是有办法同时使用这两种方法?不确定您的意思,但想法是在代码中复制/粘贴链接的create方法,使用serializer.data作为基础来构建您自己的响应数据,并最终将它们传递给响应。如果您需要对多个视图进行处理,那么您应该明确地考虑一个MIXIN,您将添加到您的视图中。问题是,如果覆盖create而不是perform_create,则需要(通常)在DRF中的正常create()中复制大量代码。随着DRF的发展,这可能会发生变化,您必须从DRF中获取的每一段代码最终都会腐烂,除非得到维护。虽然您不能直接从perform_create返回自定义响应,但您可以派生自己的APIexception并在那里引发它们,并让默认的APIView将它们的自定义内容转发给客户端。“随着DRF的发展,这可能会发生变化”这是不太可能的。Python2MigrationAppart,大多数代码都有6年的历史,有些代码在4年前已经过优化(尽管您自己会优化得更好)。这已经足够稳定了。