Как проанализировать несколько файлов в многочастных данных формы с помощью django rest framework? - PullRequest
0 голосов
/ 24 мая 2018

Я получаю массив с несколькими файлами.Мои request.data выглядят так:

<QueryDict: {'image': [<TemporaryUploadedFile: image_1.png (image/png)>, <TemporaryUploadedFile: image_2.png (image/png)>]

Однако, если я попытаюсь разобрать изображения следующим образом:

request.data['image']

Я вижу только последнее изображение, и django rest framework распознаетэто как объект файла, а не список.Если я пытаюсь перебрать все, что вижу, это байты.

Я использую ModelViewset и добавил этот синтаксический анализатор

    parser_classes = (MultiPartParser, FormParser)

1 Ответ

0 голосов
/ 24 мая 2018

A QueryDict имеет специальную функцию для получения всех значений, связанных с конкретным ключом: getlist(key) [doc] .Таким образом, вы можете написать его следующим образом:

request.data<b>.getlist('image')</b>  # list of images

Затем вы можете обрабатывать каждое изображение отдельно (например, в цикле for).

Или как указано в документации :

<b>QueryDict.getlist(key, default=None)</b>
Возвращает список данных с запрошенным ключом.Возвращает пустой список, если ключ не существует и значение по умолчанию не предоставлено.Гарантируется возврат списка, если только значение
default не является 'списком.

Если вы выполните индексацию (например, request.data[key]), тогда Python вызовет __getitem__ за шторами, и это приведет к:

<b>QueryDict.__getitem__(key)</b>
Возвращает значение для данного ключа.Если ключ имеет более одного значения, он возвращает
последнее значение .Повышает django.utils.datastructures.MultiValueDictKeyError, если ключ не существует.(Это подкласс стандартного языка Python KeyError, поэтому вы можете использовать KeyError.)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...