Я пытаюсь реализовать функцию загрузки изображений с использованием React и DRF.Я считаю, что это не работает должным образом.Когда я попытался загрузить изображение в правильном формате, оно работало нормально.Но когда я попытался загрузить недействительное изображение, в ответ оно выдает мне длинную ошибку, отличную от упомянутой в коде.
class ArticleManager(models.Manager):
def active(self, *args, **kwargs):
return super(ArticleManager, self).filter(draft=False).filter(publish__lte=timezone.now())
class Articles(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=300)
short_title = models.CharField(max_length=300, blank=True, default='not available')
content = models.TextField()
draft = models.BooleanField(default=False)
# publish = models.DateField(auto_now=False, auto_now_add=False)
publish = models.DateField(auto_now_add=True, blank=True, null=True)
read_time = models.IntegerField(default=0)
updated = models.DateTimeField(auto_now=True, auto_now_add=False)
timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)
slug = models.SlugField(unique=True, blank=True)
like = models.BooleanField(default=False)
image = models.ImageField(null=True, blank=True, upload_to='images/articles/')
thumbnail = models.ImageField(null=True, blank=True, upload_to='images/articles/thumbnail/')
objects = ArticleManager()
def __unicode__(self):
return self.title
def __str__(self):
return self.title
class Meta:
ordering = ['-timestamp', '-updated']
def save(self, force_insert=False, force_update=False, using=None, update_fields=None):
if not self.pk:
self.slug = create_slug(Articles, self.title)
if self.image:
image_type = self.image.name.split('.')[-1]
self.image.name = '{}.{}'.format(self.slug.replace('-', '_'), image_type)
if not self._get_thumb():
raise ValueError("Thumbnail could not be created") # I am expecting to get this error
return super(Articles, self).save(
force_insert=force_insert,
force_update=force_update,
using=using,
update_fields=update_fields
)
def _get_thumb(self):
image = Image.open(self.image)
image.thumbnail((200, 200), Image.ANTIALIAS)
thumb_name, thumb_extension = os.path.splitext(self.image.name)
thumb_extension = thumb_extension.lower()
thumb_filename = thumb_name + '_thumb' + thumb_extension
if thumb_extension in ['.jpg', '.jpeg']:
FTYPE = 'JPEG'
elif thumb_extension == '.gif':
FTYPE = 'GIF'
elif thumb_extension == '.png':
FTYPE = 'PNG'
else:
return False # Unrecognized file type
# Save thumbnail to in-memory file as StringIO
temp_thumb = BytesIO()
image.save(temp_thumb, FTYPE)
temp_thumb.seek(0)
self.thumbnail.save(thumb_filename, ContentFile(temp_thumb.read()), save=False)
temp_thumb.close()
return True
ошибка, которую я получаю
Traceback (most recent call last):
File "E:\GIT\personal-blog\backend\venv\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
response = get_response(request)
File "E:\GIT\personal-blog\backend\venv\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "E:\GIT\personal-blog\backend\venv\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "E:\GIT\personal-blog\backend\venv\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "E:\GIT\personal-blog\backend\venv\lib\site-packages\django\views\generic\base.py", line 71, in view
return self.dispatch(request, *args, **kwargs)
File "E:\GIT\personal-blog\backend\venv\lib\site-packages\rest_framework\views.py", line 497, in dispatch
response = self.handle_exception(exc)
File "E:\GIT\personal-blog\backend\venv\lib\site-packages\rest_framework\views.py", line 457, in handle_exception
self.raise_uncaught_exception(exc)
File "E:\GIT\personal-blog\backend\venv\lib\site-packages\rest_framework\views.py", line 468, in raise_uncaught_exception
raise exc
File "E:\GIT\personal-blog\backend\venv\lib\site-packages\rest_framework\views.py", line 494, in dispatch
response = handler(request, *args, **kwargs)
File "E:\GIT\personal-blog\backend\venv\lib\site-packages\rest_framework\generics.py", line 190, in post
return self.create(request, *args, **kwargs)
File "E:\GIT\personal-blog\backend\venv\lib\site-packages\rest_framework\mixins.py", line 19, in create
self.perform_create(serializer)
File "E:\GIT\personal-blog\backend\articles\api\views.py", line 62, in perform_create
serializer.save(user=self.request.user)
File "E:\GIT\personal-blog\backend\venv\lib\site-packages\rest_framework\serializers.py", line 213, in save
self.instance = self.create(validated_data)
File "E:\GIT\personal-blog\backend\venv\lib\site-packages\rest_framework\serializers.py", line 932, in create
instance = ModelClass._default_manager.create(**validated_data)
File "E:\GIT\personal-blog\backend\venv\lib\site-packages\django\db\models\manager.py", line 82, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "E:\GIT\personal-blog\backend\venv\lib\site-packages\django\db\models\query.py", line 422, in create
obj.save(force_insert=True, using=self.db)
File "E:\GIT\personal-blog\backend\articles\models.py", line 58, in save
raise ValueError("Thumbnail could not be created")
ValueError: Thumbnail could not be created