【问题标题】:Django easy-thumbnails getting weird naming with duplicate extensionsDjango 简单的缩略图使用重复的扩展名得到奇怪的命名
【发布时间】: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 中打印extstr(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


【解决方案1】:

根据图书馆的文档,Link。有 4 个可用的命名器。

Four namers are included in easy_thumbnails:

``easy_thumbnails.namers.default``
    Descriptive filename containing the source and options like
    ``source.jpg.100x100_q80_crop_upscale.jpg``.

``easy_thumbnails.namers.hashed``
    Short hashed filename like ``1xedFtqllFo9.jpg``.

``easy_thumbnails.namers.alias``
    Filename based on ``THUMBNAIL_ALIASES`` dictionary key like ``source.jpg.medium_large.jpg``.

``easy_thumbnails.namers.source_hashed``
    Filename with source hashed, size, then options hashed like
    ``1xedFtqllFo9_100x100_QHCa6G1l.jpg``.

由于您没有设置它,它将采用默认选项,即11.jpg.100x100_q85.jpg

但是,您可以选择创建自定义命名器。 Link

To write a custom namer, always catch all other keyword arguments arguments
(with \\*\\*kwargs). You have access to the following arguments:
``thumbnailer``, ``source_filename``, ``thumbnail_extension`` (does *not*
include the ``'.'``), ``thumbnail_options``, ``prepared_options``.

也在这里Link

注意:有人还在 Github 上提出了一个问题。 Link

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-02
    • 2013-10-13
    • 2012-01-12
    • 1970-01-01
    • 2011-10-04
    • 2015-11-06
    相关资源
    最近更新 更多