如何在 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)