重置Django站点的sorl缩略图

8 投票
1 回答
3275 浏览
提问于 2025-04-18 11:38

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

Sorl认为它找到了一个缩略图,但实际上并不存在这个缩略图,所以显示了一个错误的图片。当我直接通过URL访问这个缩略图时,结果是404错误。

我想做的是重置sorl,就像我第一次使用它一样。我尝试运行 python manage.py thumbnail cleanuppython manage.py thumbnail clear,但是sorl仍然会返回一个像 "http://www.whatever.com/media/cache/84/0f/840fa03745a82238b980f4ceb188b110.jpg" 这样的URL,而这个地方并没有图片。

我以为sorl的作用是查找缩略图,如果没有找到,就会创建一个。

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

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

我该如何在我的Django项目中完全重置sorl,以便它在浏览我的网站时能够重新生成缩略图呢?

谢谢你的帮助。

补充:我进一步调查了一下,发现问题可能与在生产环境中创建缩略图有关。在我的开发服务器上,我运行 thumbnail clear,然后网站会重新加载缩略图。我的生产服务器是通过ngin-x和uWSGI运行的,并且DEBUG是关闭的。

后续补充:我的问题是权限问题。生产服务器没有权限写入包含缓存的驱动器,而开发服务器是有权限的。

1 个回答

2

我也遇到过同样的问题,我做的就是调整图片的大小,这样它就可以重新加载了:

{% thumbnail image.original "x301" as thumb %}

撰写回答