python - 如何在 django Rest 框架中序列化当前用户?

标签 python django django-rest-framework

我编写了一个自定义用户并为其定义了序列化器,现在我有了一个用户发送 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/

相关文章:

python - 不使用 GPU 的 Tensorflow 数据集 API

python - 将相同的字符串重复添加到列表中以使其成为元组

django - 配置 Django-rest

java - 如何在 Django RESTful API 上解决 Retrofit @POST 上的 404?

Django rest ModelViewSet 多个具有不同 URL 的 GET 请求

python - Tweepy 的 Twitter 错误代码 429

python - 如何在 Pandas 中使用 Rolling OLS Model 接口(interface)?

python - Django日志记录: log is not created

python - django mongoengine 与 mongoengine 之间的区别

python - Web框架的局限性如何