Невозможно проверить загрузку файла с помощью метода Django clien.post - PullRequest
0 голосов
/ 17 июня 2020

У меня проблема с тестированием метода API.

У меня есть модель Game с таким полем:

background = models.ImageField(max_length=255, null=True, blank=True, storage=s3_storage, upload_to='game_back/%Y/%m/%d')

Сериализатор для этой модели выглядит так:

class GameSerializer(serializers.ModelSerializer):
    class Meta:
        model = Game
        fields = (<list_of_fields>, 'background')

Я попытался написать тест, который передает изображение кота на эту модель. Но у меня проблема с методом сборки Djna go для публикации.

Если я напишу:

file = open('<path_to>/test_image.png', 'rb')
content_bytes = file.read()
img = SimpleUploadedFile("uni_image.png", content_bytes, content_type="image/png")

response = self.client.post(
            reverse('game_create'),
            data={'background': img},
            format="multipart"
        )

Django вызовите исключение UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte в строке с client.post

Я попытался передать данные в кодировке base64 вместо использования SimpleUploadedFile, но в этом случае мой сериализатор API не может проверить и сохранить файл изображения.

Спасибо за реакцию!

...