Python 覆盖UpdateAliView的更新方法

Python 覆盖UpdateAliView的更新方法,python,django-rest-framework,Python,Django Rest Framework,在调用update()之前,我需要执行一些操作 我的代码 class CarView(generics.UpdateAPIView): permission_classes = (IsAdminUser,) serializer_class = CarSerializer def get_queryset(self): return ... def update(self, request, *args, **kwargs):

在调用update()之前,我需要执行一些操作

我的代码

class CarView(generics.UpdateAPIView):
    permission_classes = (IsAdminUser,)
    serializer_class = CarSerializer

    def get_queryset(self):
        return ...

    def update(self, request, *args, **kwargs):
        # some actions
        super(CarView, self).update(request, *args, **kwargs) 
但我有个错误

错误消息

class CarView(generics.UpdateAPIView):
    permission_classes = (IsAdminUser,)
    serializer_class = CarSerializer

    def get_queryset(self):
        return ...

    def update(self, request, *args, **kwargs):
        # some actions
        super(CarView, self).update(request, *args, **kwargs) 
预计将出现
响应
HttpResponse
HttpStreamingResponse
从视图返回,但收到


我怎样才能解决这个问题

与大多数Django视图一样,
ViewSet
上的
update
方法应该返回响应。现在您没有返回任何内容,这就是Django抱怨接收到
NoneType
(因为这是默认的返回值)的原因

问题来自
update
方法的最后一行,您正在调用父
update
但没有返回它

super(CarView, self).update(request, *args, **kwargs)
如果您返回它,来自通常定义的
update
方法的响应将沿着链传递,并按照您的预期呈现

return super(CarView, self).update(request, *args, **kwargs)

发生这种情况是因为在
update
方法中没有返回任何内容。Django视图期望返回
响应
对象。只需在
update
方法中添加一个
return

class CarView(generics.UpdateAPIView):
    permission_classes = (IsAdminUser,)
    serializer_class = CarSerializer

    def get_queryset(self):
        return ...

    def update(self, request, *args, **kwargs):
        # some actions
        return super(CarView, self).update(request, *args, **kwargs) 
根据文件

REST框架通过提供 响应类,它允许您返回可以呈现的内容 根据客户机的请求,分为多种内容类型

响应类是Django的SimpleTemplateResponse的子类。 响应对象使用数据初始化,数据应包括 本机Python原语。REST框架然后使用标准HTTP 内容协商,以确定如何呈现最终结果 回应内容

因此,要将数据呈现为不同的内容类型,必须返回响应