当我尝试在Postman上发布数据时,总是出现{“detail”:“Unsupported media type \“application/json\”in request."}错误

0kjbasz6  于 2023-11-18  发布在  Postman
关注(0)|答案(2)|浏览(239)

我正在做一个项目,需要我上传一张图片。但是,当我试图上传一张,并张贴我妈得到上述错误。我不知道该怎么做了。
我已经尝试过使用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)

ny6fqffe

ny6fqffe1#

也许可以尝试使用“multipart form”而不是JSON作为你的POST负载类型。对于值(我使用的是Inbox),选择右边的“文件”而不是“文本”。然后上传一个文件。这对我来说很有效,不确定是否是同样的问题。希望有帮助!
这里有一篇文章,有你正在寻找的答案。
Posting a File and Associated Data to a RESTful WebService preferably as JSON

hujrc8aj

hujrc8aj2#

一切看起来都很好,我正在做一个项目,遇到了这个问题。这个线程是旧的,但我会回答无论如何。
我相信你在POSTMAN中传递的数据是JSON。你只需要在你的parser_classes中添加JSONParser
所以更新后的parser_classes将是:

parser_classes = (FormParser,MultiPartParser, JSONParser)

字符串
希望它能解决你的问题。祝你今天愉快!

相关问题