【发布时间】:2021-01-04 23:36:09
【问题描述】:
我使用的是简易缩略图,原始文件保存正确,但缩略图保存时文件扩展名重复:
11.jpg
11.jpg.100x100_q85.jpg
我希望缩略图像这样命名:
11.100x100_q85.jpg
我的模型如下所示:
def image_filename(instance, filename):
folder = 'posts/image'
_, ext = os.path.splitext(filename)
new_name = str(instance.id) + ext
return os.path.join(folder, new_name)
class Post(models.Model):
name = models.CharField(max_length=255, unique=True)
image = ThumbnailerImageField(upload_to=image_filename, null=True, blank=True)
由于我使用 Django Rest Framework,我在这篇文章之后创建了一个序列化程序: Django easy-thumbnails serialize with Django Rest Framework
class ThumbnailSerializer(serializers.ImageField):
def __init__(self, alias, *args, **kwargs):
super().__init__(*args, **kwargs)
self.read_only = True
self.alias = alias
def to_representation(self, value):
if not value:
return None
url = thumbnail_url(value, self.alias)
request = self.context.get('request', None)
if request is not None:
return request.build_absolute_uri(url)
return url
有人知道如何在缩略图上获得正确的命名吗?
谢谢!
【问题讨论】:
-
您可以尝试在
image_filename中打印ext和str(instance.id)吗? -
@sunson1164 ext = '.jpg' 和 str(instance.id) = '11'
-
我相信删除 ext 的串联会起作用。即
new_name = str(instance.id)。如果可行,我会将其添加为答案。 -
我不工作,如果我这样做,我的缩略图被正确命名为“11.100x100_q85.jpg”,但现在我的原始图像被命名为“11”,没有任何扩展名。
标签: python django django-rest-framework easy-thumbnails