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

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

<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

<div id="app">
  <h2>Multiple Files</h2>
  <hr/>
  <form method="post" enctype="multipart/form-data">
    {% csrf_token %}
    <label>
      <span>Files</span>
      <input type="file" multiple name="file" @change="handleFileUploads($event)" />
      <ul v-if="files.length">
        <li v-for="(name, i) in filesNames" :key="i">{{ name }}</li>
      </ul>
    </label>
    <div>
      <img v-for="image in images" :src="image" />
    </div>
    <br />
    <button @click="submitFile()">Submit</button>
  </form>
</div>


<script>
new Vue({
  el: '#app',
  data() {
    return {
      files: [],
      images: [],
    }
  },
  computed: {
    filesNames() {
      const fn = []
      for (let i = 0; i < 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 < 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 < 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!!');
        });
    }
  }
})
</script>

Django 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')

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

Вернуться на верх