Flask - request.files.getlist () - не пропускать пустые - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть форма с 4 входами файла и 4 ввода текста

Форма изображения :

enter image description here

HTML-код :

<form action="{{ url_for('Test.Test') }}" method="POST" enctype=multipart/form-data >

 <input type="file" name="Image"/>
 <input type="text" name="Name"/><br/>
 <input type="file" name="Image"/>
 <input type="text" name="Name"/><br/>
 <input type="file" name="Image"/>
 <input type="text" name="Name"/><br/>
 <input type="file" name="Image"/>
 <input type="text" name="Name"/><br/>
 <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
  <input type="submit"/>
</form>

Я заполняю только 3/4 файловых ввода и все текстовые вводы

Когда меня пытаются обработать эту форму следующим кодом:

GetFiles = request.files.getlist('Image')
Name = request.form.getlist('Name')
for x, y in zip(GetFiles, Name):
   print x, y

Ожидаемый результат :

<FileStorage: u'1.jpeg' ('image/jpeg')> 1
<FileStorage: u'2.jpeg' ('image/jpeg')> 2
None 3
<FileStorage: u'3.jpeg' ('image/jpeg')> 4

Но я получаю :

<FileStorage: u'1.jpeg' ('image/jpeg')> 1
<FileStorage: u'2.jpg' ('image/jpeg')> 2
<FileStorage: u'3.jpeg' ('image/jpeg')> 3

Спасибо за ваши ответы

1 Ответ

0 голосов
/ 04 февраля 2019

Суть: GetFiles имеет 3 элемента (поскольку было выбрано только 3 файла), Name имеет 4 элемента. Python zip doc говорит:

Итератор останавливается, когда исчерпан кратчайший итеративный ввод.

Вы знаете, какие "Изображение "идет с каким" текстом ", а компьютер - нет.Один из подходов:

  • в html: присвойте каждому входному изображению уникальное имя, например, name="Image-1".
  • в py: переберите Names и "получите"изображение с этим именем (что-то вроде request.files.get('Image-'+{index})
  • Не забудьте, get() вернет None, если ключ не найден
  • Не забудьте, если вы итерируетеИмена с чем-то вроде range(len(Names)) будут проиндексированы.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...