为 Django 站点重置 sorl 缩略图

Posted

技术标签:

【中文标题】为 Django 站点重置 sorl 缩略图【英文标题】:Reset sorl Thumbnail for a Django site 【发布时间】:2014-08-21 07:51:07 【问题描述】:

我们从开发服务器切换到生产服务器,但尝试为 sorl thubmnail 使用相同的缓存。在我们尝试解决问题的过程中,我们几乎搞砸了缓存,删除了所有缓存的图像。

Sorl 认为找到了缩略图,但不存在缩略图,因此显示错误图像。尝试从其 URL 直接访问缩略图会导致 404。

我想做的是重置 sorl,就好像我刚开始使用它一样。 我尝试运行python manage.py thumbnail cleanuppython manage.py thumbnail clear,但是sorl 仍然会返回一个url,例如“http://www.whatever.com/media/cache/84/0f/840fa03745a82238b980f4ceb188b110.jpg”,其中不存在图像。

我认为 sorl 的目的是寻找缩略图,如果不存在,它会创建一个。

我什至尝试从我的数据库中删除thumbnail_kvstore 表,但它没有任何改变。我尝试将 THUMBNAIL_KVSTORE 设置更改为 Redis,但它也没有任何改变。 Sorl 仍然不断返回不存在的缩略图。

我可以创建新的缩略图,然后这些缩略图可以正常工作。

如何在我的 Django 项目中完全重置 sorl,以便当它通过我的站点时,它会再次生成缩略图?

感谢您的帮助

编辑:我已经对其进行了更多研究,我认为问题可能与在生产环境中创建缩略图有关。在我的开发服务器上,我运行thumbnail clear,然后该站点重新加载缩略图。我的生产服务器使用 ngin-x 和 uWSGI 运行,并且 DEBUG 已关闭。

后期编辑:我的问题是权限问题。生产服务器无权写入包含缓存的驱动器,而开发服务器有。

【问题讨论】:

问题解决了吗? @Brian 是的,我解决了我们遇到的问题;但是,我认为我们不是通过重置 sorl 来做到这一点的。正如问题的“后期编辑”中所述,这个问题是完全无关的。这就是为什么我没有将其发布为答案。 创建回复,说明您是如何解决这个问题的。我对 AWS 也有同样的问题。我是否必须更改 AWS_DEFAULT_ACL 或我必须在 S3 本身中更改的内容? 嗨@GuilhermeIA - 请在问题中查看我的“后期编辑” - 我的问题与 sorl 缩略图完全无关。您可以考虑针对您的问题和设置的具体情况提出一个单独的问题。 【参考方案1】:

同样的事情发生在我身上,我所做的是改变图像的大小,以便它可以再次重新加载它们:

% thumbnail image.original "x301" as thumb %

【讨论】:

这不是正确的答案,它是一个 gambiarra。您可以更新,但每次他必须更新时,他都必须更改切割尺寸吗?

以上是关于为 Django 站点重置 sorl 缩略图的主要内容,如果未能解决你的问题,请参考以下文章

检索为 sorl 生成的缩略图

Django 简单缩略图与 sorl-thumbnail 的区别

django - 关于 sorl-thumbnail 的注意事项

如何避免在 django sorl 缩略图中拉伸图像

如何显示存储在 Django 会话系统中的本地 url 的缩略图?

django:无法让 sorl-thumbnail 工作