删除使用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 图像处理器