Python 覆盖UpdateAliView的更新方法
在调用update()之前,我需要执行一些操作 我的代码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):
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
内容协商,以确定如何呈现最终结果
回应内容
因此,要将数据呈现为不同的内容类型,必须返回响应