繁体   English   中英

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM