Python диктует автоматическое преобразование значений типа списка в простые объекты - PullRequest
0 голосов
/ 30 октября 2018

У меня странная проблема со словарем Python.

enter image description here расширяющаяся file пара ключ-значение: enter image description here Как вы можете видеть выше, внутри моего словаря данных запроса у меня есть объект с именем file, который является list (из файловых объектов). Когда я пытаюсь получить этот объект, я получаю фактический файловый объект, расположенный по индексу 0.

Даже тип показывает, что это объект, а не список. Почему это поведение?

type(request.data['file'])

django.core.files.uploadedfile.InMemoryUploadedFile

Я пытался извлечь этот ключ-паракуляр, пару значений, но я все еще получаю значение как объект, а не список, что не то, что мне нужно.

{k:v for k,v in request.data.items() if k in ['file']}
Out[16]: {'file': <InMemoryUploadedFile: irreg-total2.jpg (image/jpeg)>}

Может кто-нибудь объяснить это поведение? Я использую Python 3

1 Ответ

0 голосов
/ 30 октября 2018

data['file'] нет в списке. Это единственный экземпляр InMemoryUploadedFile, как указано {InMemoryUploadedFile}.

<class 'list'>: [<InMemoryUploadedFile: ireg-totla2.jpg (image/jpeg)>] - это просто представление этого объекта (как возвращено методом __repr__().

См. UploadedFile.__repr__() метод по https://docs.djangoproject.com/en/2.1/_modules/django/core/files/uploadedfile/#InMemoryUploadedFile

Сравните это с остальными элементами в data dict

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...