如何在 django rest 框架中序列化当前用户?
how to serialize current user in django rest framework?
我写了一个自定义用户并为它定义了序列化程序,现在我有一个端点,用户发送 get 请求。他应该得到json格式的用户信息。
由于我的回复格式如下
{
'messages': msg,
'data': data
}
我不知道如何序列化用户或使用哪个通用视图
我的代码:
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)
我写了一个自定义用户并为它定义了序列化程序,现在我有一个端点,用户发送 get 请求。他应该得到json格式的用户信息。 由于我的回复格式如下
{
'messages': msg,
'data': data
}
我不知道如何序列化用户或使用哪个通用视图 我的代码:
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)