I'm trying to send some data through a form using JavaScript Fetch to a Django view, including an image. I keep getting this error message nine times as if no data was sent to the back end:
My view is as follows:
if "contributors" in data: try: Project.objects.get(title=data['title']) return JsonResponse({'error': 'Project title already exists!'}, status=406) except Project.DoesNotExist: form = ProjectForm(request.POST, request.FILES) project = Project.objects.create( title=data['title'], description=data['description'], logo=data['logo']) return JsonResponse({"message": "Project successfully created!"}, status=201) and my JavaScript:
const projectName = document.getElementById("project_name"); const contributors = document.getElementById("id_contributors"); const description = document.getElementById("id_description"); const logo = document.getElementById("id_logo"); const projectCsrf = document.getElementsByName("csrfmiddlewaretoken")[0]; document.getElementById("submitProjectForm").addEventListener("click", () => { let formData = { title: projectName.value, contributors: contributors.value, description: description.value, logo: logo.files[0], }; submitForm(projectCsrf, formData); }); function submitForm(csrf, fields) { const request = new Request(window.location.origin, { headers: { "X-CSRFToken": csrf.value, "Content-Type": "multipart/form-data", }, }); fetch(request, { method: "POST", body: JSON.stringify(fields), }) .then((response) => response.json()) .then((result) => alert(result.message ? result.message : result.error)) .catch((err) => console.log(err)); } is it maybe due to python's Json.loads method not being able to decode the JavaScript File object? Thanks in advance!
