django - 'User' 类型的 DRF 对象不是 JSON 可序列化的

标签 django django-models django-rest-framework django-serializer

我试图通过以下方式返回当前登录用户的详细信息:

from .serializers import UserSerializer

class UserDetailsView(RetrieveAPIView):                                                                                                                                                                           
    model = User                                                                                                                                                                                                  
    queryset = User.objects.all()                                                                                                                                                                                 
    permission_classes = [permissions.IsAuthenticated]                                                                                                                                                            
    serializer_class = UserSerializer                                                                                                                                                                             

    def get(self, request, *args, **kwargs):                                                                                                                                                                      
        user = User.objects.get(id=request.user.id)                                                                                                                                                               
        print(user)                                                                                                                                                                                               
        return Response(user)

在 serializers.py 中我使用了 ModelSerializer
class UserSerializer(serializers.ModelSerializer):                                                                                                                                                                
      password = serializers.CharField(write_only=True)                                                                                                                                                             

      def create(self, validated_data):                                                                                                                                                                             
          user = UserModel.objects.create(username=validated_data['username'])                                                                                                                                      
          user.set_password(validated_data['password'])                                                                                                                                                             
          user.save()                                                                                                                                                                                               
          return user                                                                                                                                                                                               

      class Meta:                                                                                                                                                                                                   
          model = UserModel                                                                                                                                                                                         
          fields = ('id', 'username', 'password')                                                                                                                                                                   
          write_only_fields = ('password',)

我收到一个错误 Object of type 'User' is not JSON serializable .我的用例有什么问题?

最佳答案

你需要返回

return Response(serializer.data)
在 UserDetailsView 下的 get 函数中。更多详情here .

关于django - 'User' 类型的 DRF 对象不是 JSON 可序列化的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49591218/

相关文章:

python - 如何解决django中的两个模型循环依赖

python - AssertionError,尽管预期调用看起来与实际调用相同

python - Bootstrap 不适用于 django send_mail

python - 使用 Django 和 python 迁移模型时出现错误

django - 启用 auto_now_add 选项的 DateTimeField 是否必须在装置中具有值

python - 如何在 Django Rest Framework 中使用自定义 token 模型

Django Rest Framework - 创建权限

python - DRF - 过滤 2 个模型

django - 如何获得最后一次迁移

python - django stripe 设置安装报错