【问题标题】:Update User REST framework Django更新用户 REST 框架 Django
【发布时间】:2019-03-05 02:58:41
【问题描述】:

我需要在 REST framework 中更新我的用户

views.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'})

serializers.py

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ['id', 'first_name', 'last_name', 'avatar']

models.py

class User(AbstractUser):
    fb_userid = models.CharField(max_length=256)
    avatar = models.ImageField(upload_to='avatars/', blank=True, null=True)

回应: 详细信息:密钥(用户名)=() 已存在。

【问题讨论】:

  • 向我们展示您的完整课程

标签: python django python-3.x django-rest-framework


【解决方案1】:
   def post(self,request):
        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_200_OK)
        else:
            return Response(user_serializer.errors, status=status.HTTP_400_BAD_REQUEST)

【讨论】:

  • { "id": 2, "first_name": "", "last_name": "", "avatar": null } 请查看邮递员图片
  • 你问的url是update_user,这个url连接到这个posyt方法了吗?
  • 是的,我正在尝试使用此网址发布数据
  • 但您仍然保持用户不变?你能在if user_serializer.is_valid() 里面print(request.data, user_serializer.validated_data) 发帖提问吗
【解决方案2】:

@YKH 是对的,这段代码很好,你的 POST 数据可能有错误。

在您的图像中,您在 Header 中传递了两个参数。您可能传递了错误的标题。 Content-Type 不应用于表单数据

【讨论】:

    【解决方案3】:

    我发现有人和你有类似问题的帖子:Django Rest Framework unable to parse multipart/form data

    在您的图片上似乎您正在将某些内容放入“标题”选项卡中。邮递员正在为您处理这些问题,因此您不应在那里定义任何内容。您可以在不设置任何标题的情况下重试吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-30
      • 1970-01-01
      • 2018-02-14
      • 1970-01-01
      • 2016-08-09
      相关资源
      最近更新 更多