【发布时间】:2021-07-24 03:16:42
【问题描述】:
我正在尝试通过在标头中传递 Jwt 令牌来更新用户。但我的请求正文是空的。
View 将空数据传递给序列化器。
views.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 请求时,我得到与令牌相关的未更改用户。
邮递员: Postman
django 终端 说: Error
谁能解释我做错了什么?
UPD:
我不知道为什么,但是 django 无法在 PUT 请求中收到 '{'。
我回复了postman-echo.com/put。 它回复了我发送的同一个正文。
如何让 Django 在请求正文的开头接受 '{'?
【问题讨论】:
标签: django django-request