我曾经尝试在Postman上获取{“ user”:[“该字段为必填字段。”}}

时间:2019-07-26 12:40:34

标签: django rest api django-rest-framework

我正在尝试使用Django rest Framework上的createAPIView创建一个注册api。每次我在Postman上发布数据时,尽管我在浏览器中运行它时都会得到响应,但它会返回上述错误。同样,图像字段也导致邮递员的原始数据出现问题。我已经尝试了很多东西,但是似乎没有什么用。我该怎么办?

序列化器

 class UserSerializer(serializers.ModelSerializer):
     email = serializers.EmailField(
        required=True,
        validators=[UniqueValidator(queryset=User.objects.all())]
        )
    password = serializers.CharField(min_length=8)

     class Meta:
        model = User
        fields = ('id', 'first_name','last_name', 'email', 'username','password')
        extra_kwargs = {'user': {'required': False}}



class UserProfileSerializer(serializers.ModelSerializer):
    user = UserSerializer()
    code = serializers.CharField(read_only=True)
    avatar = serializers.FileField(use_url=False)


    class Meta:
        model = UserProfile
        fields = '__all__'
        extra_kwargs = {'user': {'required': False}}

    def create(self, validated_data):
        user_data = validated_data.pop('user',None)
        image = validated_data.pop('avatar')
        upr=UserProfile.objects.create(user=user_data, image=image**validated_data)
        return upr

观看次数

  class UserCreate(generics.ListCreateAPIView):

    serializer_class = UserProfileSerializer
    user_serializer = UserSerializer
    queryset = UserProfile.objects.all()
    parser_classes = (FormParser,MultiPartParser,FileUploadParser)

    def post(self, request):
        serializer = UserProfileSerializer(data=request.data)
        print(request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data,     status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

1 个答案:

答案 0 :(得分:0)

您正在尝试不首先创建用户就发送个人资料数据。并且配置文件对象必须应用于已经存在的用户。