Reputation: 463
I'm new at Django and my project is in REST when i'm using postman to check URLs it's make this error:
"detail": "Unsupported media type "multipart/form-data; boundary=----WebKitFormBoundaryAU1ShXHTHrfcQr61" in request."
and when using curl this error occurred:
{"detail":"JSON parse error - Expecting value: line 1 column 1 (char 0)"}
this is my view for an example URL:
@api_view(["POST"])
def register(request):
user_data = request.data
if user_data:
serializer = UserSerializers(data=user_data)
if serializer.is_valid():
registerInfo = {
'name': serializer.validated_data['name'],
'degImage': serializer.validated_data['degImage'],
}
serializer.save(registerInfo)
return Response({
"code": 200,
"status": "successful",
"message": "code was sent try to validate code"
})
else:
return Response({
"status": "error",
"error": "Bad request"
})
else:
return Response({
"status": "error",
"error": "Empty request"
})
and this is serializer class:
class UserSerializers(serializers.Serializer):
name = serializers.CharField(required=True)
degImage = serializers.ImageField(required=True)
def save(self, validated_data):
user = Users(
name=validated_data['name'],
degImage=validated_data['degImage']
)
user.save()
return user
and the model:
class Users(models.Model):
name = models.CharField(max_length=20, null=True)
degImage = models.ImageField(null=False, blank=False, default='detImage')
Upvotes: 12
Views: 33271
Reputation: 11
Just add in settings:
REST_FRAMEWORK = {
'DEFAULT_PARSER_CLASSES': (
'rest_framework.parsers.JSONParser',
'rest_framework.parsers.FormParser',
'rest_framework.parsers.MultiPartParser',
),
}
Upvotes: 1
Reputation: 86
You are probably sending your request with a MIME type that your method is not ready to work with.
Check out the media types in here:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types
Can't say much without looking at your request, but i hope it helps.
Upvotes: 3
Reputation: 406
In postman set, the body as Raw and select JSON from the drop-down and send the request.
change the parser in Django rest framework
settings.py
REST_FRAMEWORK = {
'DEFAULT_PARSER_CLASSES': (
'rest_framework.parsers.FormParser',
'rest_framework.parsers.MultiPartParser'
)
}
Upvotes: 23