I am trying to save strings, floats and an image via a POST
request made to a Django Rest Framework backend:
# My view:
class CreatePost(APIView):
# tried with and without parser:
# parser_classes = [FormParser, MultiPartParser]
def post(self, request):
serializer = PostSerializer(data=request.data)
if serializer.is_valid(raise_exception=True):
serializer.save(user_id=request.user.pk)
return Response(serializer.data, status=201)
return Response(serializer.errors, status=400)
# My serializer:
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = ("x", "y")
And my JS frontend:
const postBody = new FormData();
postBody.append('x', 'someValue');
postBody.append('y', 'someValue');
fetch('/api/v1/post', {
method: 'post',
body: postBody,
credentials: 'same-origin',
headers: {
'X-CSRFToken': getCookie('csrftoken'),
'Content-Type': 'multipart/form-data'
}
}
However, sending as 'Content-Type': 'multipart/form-data'
does not show any values in request.data
in my backend. Sending as application/json
works, but does not when one of the fields is an image.
How can I process both text and image using form-data
?
I tried using parsers (FormParser
and MultiPartParser
) without success.