Python 更新用户REST框架Django
我需要在REST框架中更新我的用户Python 更新用户REST框架Django,python,django,python-3.x,django-rest-framework,Python,Django,Python 3.x,Django Rest Framework,我需要在REST框架中更新我的用户 class UserUpdate(APIView): permission_classes = (permissions.IsAuthenticated,) def post(self,request): user=User.objects.get(id=request.user.id) try: user_serializer=UserSerializer(request.user,d
class UserUpdate(APIView):
permission_classes = (permissions.IsAuthenticated,)
def post(self,request):
user=User.objects.get(id=request.user.id)
try:
user_serializer=UserSerializer(request.user,data=request.data, partial=True)
if user_serializer.is_valid():
user_serializer.save()
return Response(user_serializer.data, status=status.HTTP_201_CREATED)
else:
return Response(user_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
except:
return JsonResponse({'status':0,'message':'Error on user update'})
视图.py
class UserUpdate(APIView):
permission_classes = (permissions.IsAuthenticated,)
def post(self,request):
user=User.objects.get(id=request.user.id)
try:
user_serializer=UserSerializer(request.user,data=request.data, partial=True)
if user_serializer.is_valid():
user_serializer.save()
return Response(user_serializer.data, status=status.HTTP_201_CREATED)
else:
return Response(user_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
except:
return JsonResponse({'status':0,'message':'Error on user update'})
序列化程序.py
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ['id', 'first_name', 'last_name', 'avatar']
class User(AbstractUser):
fb_userid = models.CharField(max_length=256)
avatar = models.ImageField(upload_to='avatars/', blank=True, null=True)
型号.py
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ['id', 'first_name', 'last_name', 'avatar']
class User(AbstractUser):
fb_userid = models.CharField(max_length=256)
avatar = models.ImageField(upload_to='avatars/', blank=True, null=True)
答复:
详细信息:密钥(用户名)=()已存在
@YKH是对的。此代码很好。您的帖子数据中可能有错误 在图像中,您正在标题中传递两个参数。有可能你传错了头球。
内容类型不应用于表单数据我发现这篇文章中有人与您有类似的问题:
在您的图片上,似乎您正在将某些内容放入标题选项卡中。邮递员会帮你处理的,所以你不应该在那里定义任何东西。您可以在不设置任何标题的情况下重试吗?{“id”:2,“first_name”:“,“last_name”:“,“avatar”:null}请检查邮递员图像您询问的url是否为update_user,此url是否连接到此posyt方法?是的,我正在尝试使用此url发布数据,但您仍然无法更改用户?您能否
打印(request.data,user\u serializer.validated\u data)
内部如果user\u serializer.is\u valid()