Почтовый запрос Django TestCase APIClient с пакетом запроса - PullRequest
0 голосов
/ 21 октября 2019

Когда я использую пакет запросов python для публикации некоторых данных (в Amazon S3), которые содержат данные, состоящие из файла и некоторых других строковых данных, пакет запроса автоматически устанавливает тип содержимого multipart / form-data.

response=requests.post(data['url'],files=fields)

Это отправляет файл, и он прекрасно работает.

Но поскольку я нахожусь в Джанго, я хочу использовать APIClient или Client, чтобы сделать то же самое.

Сначала я попробовал это:

awsclient= APIClient()
content_type = 'multipart/form-data'
response=awsclient.post(data['url'],data=fields,format=content_type)

Я получаю эту ошибку

Недопустимый формат 'multipart / form-data'. Доступные форматы «multipart». Установите TEST_REQUEST_RENDERER_CLASSES, чтобы включить дополнительные форматы запросов.

Я не смог найти много информации по этому вопросу.

Итак, я попробовал это

awsclient= APIClient()
content = encode_multipart('TestCaseBoundry', fields)
content_type = 'multipart/form-data; boundary=TestCaseBoundry'
response=awsclient.post(data['url'],content,content_type=content_type)

, которое также не работает. Я получаю ошибку 404 от сервера.

Каковы некоторые из способов отладки этого

Предполагается ли это field = или content_type = для 'multipart / form-data' * 1024? *

Как бы вы отследили, почему это происходит? WireShark? Есть ли способ напечатать заголовки запроса Client или ApiClient?

Я написал код javascript, который делает то же сообщение с XMLHttpRequest, используя FormData, и который также использует multipart / form-data, и это прекрасно работает.

Короче говоря, я могу просто использовать пакет запроса и быть в пути. Но мне просто очень любопытно.

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