尝试在邮递员上发布数据时,总是出现{“ detail”:“请求中不受支持的媒体类型\” application / json \“。”}错误

时间:2019-07-27 19:36:29

标签: django rest django-rest-framework postman

我正在一个需要上载图像的项目中。但是,当我尝试上传一个并发布时,出现上述错误。我不知道该怎么办了。

我已经尝试使用FileUploadParser并创建类Base64ImageField。请帮忙。

模型

  class UserProfile(models.Model):
    user = models.OneToOneField(User,on_delete=models.CASCADE, default=None, null=True)
    avatar = models.ImageField(upload_to='', blank=True, null=True)
    code = models.CharField(max_length=8, unique=True, default=unique_rand)
     emailVerified = models.NullBooleanField(null=True, default=None)
    facebookId = models.CharField( null=True,unique=True, default=None,max_length=255)
    googleId = models.CharField(null=True,unique=True,default=None,max_length=255)
    phone_regex = RegexValidator(regex=r'^\+?1?\d{9,15}$')
    mobile = models.CharField(validators=[phone_regex, MinLengthValidator(10)], max_length=10, null=True, default=None)
    mobileVerified = models.NullBooleanField(null=True,default=None)
    status = models.BooleanField(default=False)

序列化器

   class UserProfileSerializer(serializers.ModelSerializer):
      user = UserSerializer()
      avatar = Base64ImageField(required=False)
       code = serializers.CharField(read_only=True)
     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')
    user = User.objects.create(**user_data)
    image = validated_data.pop('avatar')
                                                                                          upr=UserProfile.objects.create(user=user,image=image,**validated_data)
    return upr

观看次数

 class UserCreate(generics.ListCreateAPIView):

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

def pre_save(self, request):
    request.avatar = self.request.FILES.get('file')

def post(self, request):
    print(request.data)
    serializer= UserProfileSerializer(data=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)

也许尝试使用“ multipart form”而不是JSON作为POST有效负载类型。对于值(我正在使用Insomnia),请选择右侧的下拉列表,然后选择“文件”而不是“文本”。然后上传文件。 这对我有用,不确定是否是同样的问题。希望有帮助!

这是发布您所需要答案的帖子。

Posting a File and Associated Data to a RESTful WebService preferably as JSON