Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 修复了实例对象不可调用的错误_Python_Django_Api_Django Rest Framework - Fatal编程技术网

Python 修复了实例对象不可调用的错误

Python 修复了实例对象不可调用的错误,python,django,api,django-rest-framework,Python,Django,Api,Django Rest Framework,我需要使用基于APIView类的代码来编辑用户详细信息,如名字、姓氏。serializers.py和views.py在下给出,但它没有根据用户详细信息进行更改。我正在传递用于用户身份验证的令牌。任何协助都将不胜感激 序列化程序.py 视图.py 如果您不提供序列化程序,序列化程序如何知道它必须更新用户 serializer = UserEditSerializer(data=request.data) 应该是: serializer = UserEditSerializer(s

我需要使用基于APIView类的代码来编辑用户详细信息,如名字、姓氏。serializers.py和views.py在下给出,但它没有根据用户详细信息进行更改。我正在传递用于用户身份验证的令牌。任何协助都将不胜感激

序列化程序.py

视图.py


如果您不提供序列化程序,序列化程序如何知道它必须更新用户

    serializer = UserEditSerializer(data=request.data)
应该是:

    serializer = UserEditSerializer(self.object, data=request.data)
编辑:
另外,删除
返回实例后的()

此视图将起作用。谢谢Linovia

class UserEditProfile(APIView):
    authentication_classes = (authentication.TokenAuthentication,)
    permission_classes = (permissions.IsAuthenticated,)

    def post(self, request):
        obj = User.objects.get(id=request.user.id)
        serializer = UserEditSerializer(obj, data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_200_OK)
        else:
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

还要根据文档仔细检查序列化程序的更新签名。参数顺序错误。谢谢,我应用了它,但它给出了一个完整性错误,如前一个-IntegrityError at/users/edit profile UNIQUE constraint失败:auth_user.id
    serializer = UserEditSerializer(self.object, data=request.data)
class UserEditProfile(APIView):
    authentication_classes = (authentication.TokenAuthentication,)
    permission_classes = (permissions.IsAuthenticated,)

    def post(self, request):
        obj = User.objects.get(id=request.user.id)
        serializer = UserEditSerializer(obj, data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_200_OK)
        else:
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)