Requests и requests_toolbelt не загружают файл в django
Мне нужно загрузить файл в приложение django из настольного приложения pyside2, код загрузки выполняется на рабочем классе с помощью QThread, он работает, когда я загружаю файл только с помощью запросов.
# Login
login_url = 'http://127.0.0.1:8000/users/login'
client = requests.session()
client.get(login_url)
csrftoken = client.cookies['csrftoken']
login_data = {'username': username, 'password': password, 'csrfmiddlewaretoken': csrftoken}
response = client.post(login_url, data=login_data)
# Upload
upload_url = 'http://127.0.0.1:8000/upload'
client.get(upload_url)
csrftoken = client.cookies['csrftoken']
file = {'file': open(file[0], 'rb')
response = client.post(upload_url, files=file, data={'csrfmiddlewaretoken': csrftoken})
но я пытаюсь использовать requests_toolbelt для отслеживания прогресса загрузки. с кодом ниже django говорит, что форма не получает поле файла.
data = encoder.MultipartEncoder(fields={'file': open(file[0], 'rb'), 'csrfmiddlewaretoken': csrftoken})
monitor = encoder.MultipartEncoderMonitor(data, callback)
response = client.post(upload_url, data=monitor, headers={'Content-Type': monitor.content_type})
но если я посылаю файл в атрибуте request file, QThread не завершается.
data = {'csrfmiddlewaretoken': csrftoken}
file = encoder.MultipartEncoder(fields={'file': open(file[0], 'rb')})
monitor = encoder.MultipartEncoderMonitor(file, callback)
response = client.post(upload_url, file=monitor, data=data, headers={'Content-Type': monitor.content_type})