我编写了一个自定义用户并为其定义了序列化器,现在我有了一个用户发送 get 请求的端点。他应该获取json格式的用户信息。 由于我的回复格式如下
{
'messages': msg,
'data': data
}
我不知道如何序列化用户或使用哪个通用 View 我的代码:
class ProfileView(generics.RetrieveAPIView):
permission_classes = (IsAuthenticated,)
serializer_class = UserSerializer
def retrieve(self, request, *args, **kwargs):
serializer = self.serializer_class(data=request.user)
if serializer.is_valid():
return successful_response(
messages=_('User Profile'),
data=serializer.data
)
return unsuccessful_response(serializer.errors)
以及我得到的错误:
{
"errors": {
"non_field_errors": [
"Invalid data. Expected a dictionary, but got User."
]
}
}
有人有想法吗?
最佳答案
您可能需要将“用户实例”转换为字典 我建议这样做:
from django.forms.models import model_to_dict #this line
class ProfileView(generics.RetrieveAPIView):
permission_classes = (IsAuthenticated,)
serializer_class = UserSerializer
def retrieve(self, request, *args, **kwargs):
serializer = self.serializer_class(data=model_to_dict(request.user))# instance converted to dict
if serializer.is_valid():
return successful_response(
messages=_('User Profile'),
data=serializer.data
)
return unsuccessful_response(serializer.errors)
关于python - 如何在 django Rest 框架中序列化当前用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70504336/