Django PUT/PATCH请求体在RetrieveUpdateAPIView中为空



我正试图通过在标头中传递Jwt令牌来更新用户。但我的请求正文是空的。

视图将空数据传递给序列化程序。

视图.py

class UserRetrieveUpdateAPIView(RetrieveUpdateAPIView):
permission_classes = (IsAuthenticated,)
renderer_classes = (UserJSONRenderer,)
serializer_class = UserSerializer
def retrieve(self, request, *args, **kwargs):
serializer = self.serializer_class(request.user)
return Response(serializer.data, status=status.HTTP_200_OK)
def update(self, request, *args, **kwargs):
serializer_data = request.data.get('user', {})
print(f'request data: {request.data}') # prints empty dic {}
serializer = self.serializer_class(
request.user, data=serializer_data, partial=True
)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)

当我在Postman上运行PUT或PATCH请求时,我会得到与令牌相关的不变用户。

邮递员:邮差

django终端显示:错误

有人能解释我做错了什么吗?

UPD:

我不知道为什么,但django无法在PUT请求中接收到"{"。

我在postman-echo.com/put上回应道。它的回复与我发送的相同。

PUT请求的回声

如何让Django在请求正文的开头接受"{"?

这也发生在我身上,遵循了一个教程,所以我替换了这个:

serializer_data = request.data.get('user', {})

只有这个:

serializer_data = request.data

似乎有效(至少对我来说(,希望能有所帮助。

相关内容

  • 没有找到相关文章

最新更新