Когда я использую пакет запросов 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, и это прекрасно работает.
Короче говоря, я могу просто использовать пакет запроса и быть в пути. Но мне просто очень любопытно.