У меня есть сайт Django (1.11), который позволяет загружать медиа-файлы.У меня есть некоторые базовые проверки для типов MIME (например, просто принять файлы 'video / m4v').
Эта проверка работает нормально, когда я использую сайт в браузере (через веб-интерфейс) - через python manage.py runserver
.
Сейчас я пишу некоторые модульные тесты, но обнаруживаю, что независимо от типа файла, который я публикую, он всегда выбирается как mime-тип application / octet-stream.
Мой модультестовый код выглядит следующим образом:
media_file = open('sample_video.m4v','rb')
self.client.login(username='admin', password='password')
response = self.client.post(reverse('oppia_av_upload'), {'media_file': media_file })
self.assertEqual(response.status_code, 200)
В команде self.client.post есть ли способ указать тип mime, чтобы он был правильно выбран?
Для информации,Я знаю, что с типами MIME можно «возиться», поэтому это не будет гарантией того, что файл относится к тому типу, к которому он относится.
Любая помощь, высоко ценимая.
Редактировать: Просто включить код проверки загрузки файла в проверку формы на случай, если что-то здесь я делаю неправильно:
def clean(self):
cleaned_data = super(UploadMediaForm, self).clean()
media_file = cleaned_data.get("media_file")
print(media_file.content_type)
if media_file is not None and media_file.content_type not in settings.OPPIA_MEDIA_FILE_TYPES:
raise forms.ValidationError(_(u"You may only upload a media file which is one of the following types: %s" % ', '.join(settings.OPPIA_MEDIA_FILE_TYPES)))