Не удалось получить доступ к данным формы в Django. Загрузка файлов с помощью VueJS и Axios Django

#django #vue.js #axios

#джанго #vue.js #аксиос

Вопрос:

Я использовал код загрузки файлов с помощью VueJS и Axios. Я использую внутренний код, загруженные изображения Django сохраняются в базе данных. В разделе после отправки и перед отправкой я могу видеть изображения, загруженные в консоль. Но после отправки я не могу получить доступ к данным формы в бэкэнд django. Ниже приведен фрагмент кода кода шаблона

 lt;script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"gt;lt;/scriptgt; lt;script src="https://unpkg.com/axios/dist/axios.min.js"gt;lt;/scriptgt;  lt;div id="app"gt;  lt;h2gt;Multiple Fileslt;/h2gt;  lt;hr/gt;  lt;form method="post" enctype="multipart/form-data"gt;  {% csrf_token %}  lt;labelgt;  lt;spangt;Fileslt;/spangt;  lt;input type="file" multiple name="file" @change="handleFileUploads($event)" /gt;  lt;ul v-if="files.length"gt;  lt;li v-for="(name, i) in filesNames" :key="i"gt;{{ name }}lt;/ligt;  lt;/ulgt;  lt;/labelgt;  lt;divgt;  lt;img v-for="image in images" :src="image" /gt;  lt;/divgt;  lt;br /gt;  lt;button @click="submitFile()"gt;Submitlt;/buttongt;  lt;/formgt; lt;/divgt;   lt;scriptgt; new Vue({  el: '#app',  data() {  return {  files: [],  images: [],  }  },  computed: {  filesNames() {  const fn = []  for (let i = 0; i lt; this.files.length;   i) {  fn.push(this.files.item(i).name)  console.log('fn');  console.log(fn);  }  return fn  }  },  methods: {  handleFileUploads(event) {  this.files = event.target.files;  this.images = [...this.files].map(URL.createObjectURL);  console.log('images');  console.log(this.images);  let formData = new FormData();  for (var i = 0; i lt; this.files.length; i  ) {  let file = this.files[i];  formData.append('files['   i   ']', file);   }  console.log('formData');  console.log(formData);  console.log('values');  console.log(formData.values());  for (var value of formData.values()) {  console.log('value');  console.log(value);  }  },   submitFile() {  console.log("submit");  let formData = new FormData();  let fna = []  for (var i = 0; i lt; this.files.length; i  ) {  let file = this.files[i];  formData.append('files['   i   ']', file);  fna.push(file);  console.log('formData');  console.log(formData);  console.log('files['   i   ']', file);   }  console.log('formData');  console.log(formData);  console.log(formData.values());  for (var value of formData.values()) {  console.log(value);  }  axios.post('/service-ad-testing', formData, {  headers: {  'X-CSRFTOKEN': '{{ csrf_token }}',  'Content-Type': 'multipart/form-data'  }  }).then(function() {  console.log('SUCCESS!!');  console.log('files');  console.log(this.files);  console.log('images');  console.log(this.images);  })  .catch(function() {  console.log('FAILURE!!');  });  }  } }) lt;/scriptgt;   

Джанго views.py

 def servicevue_test(request):  if request.method == "POST":  data = request.POST.getlist('file')  data1 = request.POST.get('file')  print('data')  print(data)  print(data1)   savehotel = Hotel(  image=data,  image2=data,  )  savehotel.save()  messages.success(request, """Your Ad is successfully posted.""")  return JsonResponse(data, safe=False)  return render(request, 'testlightbox.html')  

Из приведенного выше кода я получаю пустой список ответов. Как я могу добиться сохранения данных в базе данных. Пожалуйста, любой может помочь мне в этом, спасибо.