重置Django站点的sorl缩略图
我们从开发服务器切换到了生产服务器,但尝试使用相同的缓存来处理sorl缩略图。在解决问题的过程中,我们几乎搞砸了缓存,删除了所有缓存的图片。
Sorl认为它找到了一个缩略图,但实际上并不存在这个缩略图,所以显示了一个错误的图片。当我直接通过URL访问这个缩略图时,结果是404错误。
我想做的是重置sorl,就像我第一次使用它一样。我尝试运行 python manage.py thumbnail cleanup
和 python 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 个回答
我也遇到过同样的问题,我做的就是调整图片的大小,这样它就可以重新加载了:
{% thumbnail image.original "x301" as thumb %}