删除使用easy-thumbnails Django App生成的所有缩略图

Posted

技术标签:

【中文标题】删除使用easy-thumbnails Django App生成的所有缩略图【英文标题】:Remove all thumbnails generated with easy-thumbnails Django App 【发布时间】:2013-04-19 17:44:11 【问题描述】:

我在我的 Django 1.5 项目中使用easy-thumbnails 来生成缩略图。

我一直在使用几种不同大小的缩略图进行测试,但现在我想从我的文件系统和 easy-thumbnails 数据库条目中清除所有缩略图。随着时间的推移,我创建了许多不同大小的图像,现在我想删除它们。

我的意图是从一张白纸开始,并删除所有缩略图。我不知道该怎么做。

【问题讨论】:

【参考方案1】:

刚刚遇到同样的问题。

给定:

class MyModel(Model):
    image = ThumbnailerImageField()

您可以删除所有缩略图:

for m in MyModel.objects.all():
    m.image.delete_thumbnails()

如果你有:

class MyModel(Model):
    image = ImageField()

那么你应该使用:

from easy_thumbnails.files import get_thumbnailer

for m in MyModel.objects.all():
    thumbnailer = get_thumbnailer(m.image)
    thumbnailer.delete_thumbnails()

【讨论】:

对我有用,但导入应该是:from easy_thumbnails.files import get_thumbnailer(上面代码中的 easy_thumbnails 中缺少 s) 大家好。实际上,这个解决方案对我不起作用。现在正确吗?【参考方案2】:

我已经创建了一个图片模型,我在其中添加了一个方法,如下

from easy_thumbnails.models import Source, Thumbnail
def clean_thumbnail(self):
    if self.image:
        sources = Source.objects.filter(name=self.image.name)
        if sources.exists():
            for thumb in Thumbnail.objects.filter(source=sources[0]):
                try:
                    os.remove(os.path.join(settings.MEDIA_ROOT, thumb.name))
                    thumb.delete()
                except Exception, e:
                    logger.warning(e)

它就像一个魅力。

【讨论】:

可以使用thumbnail_default_storage 删除文件。

以上是关于删除使用easy-thumbnails Django App生成的所有缩略图的主要内容,如果未能解决你的问题,请参考以下文章

easy-thumbnails:在缩略图别名中使用 scale_and_crop 图像处理器

Django:sorl-thumbnail 和 easy-thumbnail 在同一个项目中

Djang

创建djang+vue项目

Django框架-- Djang与Ajax

Djang_Q搜索