Django easy-thumbnails vs sorl-thumbnail的差异

dvt*_*tan 8 django sorl-thumbnail django-imagekit easy-thumbnails

我一直在阅读和尝试Django的各种缩略图应用程序.这些是要求:

  • 所有生成的缩略图必须保存在与原始图像分开的S3存储桶中,即单独的存储类

  • 删除图像实例时,还必须删除原始图像文件以及所有生成的缩略图

  • 最大限度地减少昂贵的低效率,例如 获取缩略图的URL以在DRF中序列化不应该在S3存储桶中查看它是否每次都存在,等等.

VersatileImageField未能满足第一个要求.ImageKit未能满足第二个要求.第三个要求是我最困惑的地方; 我试图告诉自己最佳实践,但信息是分散的,我没有信心根据我迄今学到的知识做出决定.

根据我的阅读,我的印象是最有效的行为如下:

  • 保存后立即生成缩略图并假设它始终存在
  • 访问缩略图,根据原始图像的文件名和缩略图尺寸/质量生成URL,因为我们知道它肯定存在
  • post_delete将删除所有缩略图和原始文件

我最感兴趣的学习那么简单,缩略图和SORL-缩略图取(如果它们与过程对准我非常简要地高于或如果他们有一些更有效的概述)在方法上的差异,人和的优势/劣势在他们的每个方法中.

小智 0

我不确定这是否有帮助,但我过去使用过简单缩略图,并且我相当确定如果您稍微配置一下它,它就能完成您要求的所有操作。使用保存功能配置它有点棘手,因为保存功能不关心配置,但这并非不可能。可能导致问题的主要原因是您必须使用“保存并继续编辑”才能访问和使用缩略图选项。如果您尚未创建它,因为它是在保存时创建的,那么在您执行此操作之前它不会可见。

def save()
    found_id = self.id
        super(Team, self).save(*args, **kwargs)
        if self.image and found_id is None and self.original_image_width and self.original_image_height:
            self.image = get_thumbnailer(self.image).get_thumbnail({
                'size': (self.original_image_width, self.original_image_height)
            }).name
        super(Team, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)