Sorl-thumbnail无法创建缓存文件夹,缩略图生成报错
Sorl-Thumbnail 无法生成缩略图报错解决方案
错误原因分析
从报错信息[Errno 2] No such file or directory: 'D:\developer\love\love_prim\media\Photo object (11)'可以明确看出:sorl-thumbnail 没有拿到图片的实际文件路径,而是直接使用了 Photo 模型对象的字符串表示,导致它去 media 目录下寻找名为Photo object (11)的文件,自然找不到,进而无法生成缓存缩略图。
解决步骤
修正模板中的 thumbnail 调用
检查模板代码,确保传递给thumbnail标签的是 Photo 对象的图片字段(比如image字段),而非对象本身。
错误示例:{% thumbnail photo "960x339" as im %} <img src="{{ im.url }}"> {% endthumbnail %}正确示例(假设图片字段名为
image):{% thumbnail photo.image "960x339" as im %} <img src="{{ im.url }}"> {% endthumbnail %}验证模型字段配置
确认 Photo 模型中的图片字段(如models.ImageField)的upload_to参数设置正确,且原始图片确实已保存到media/profiles目录下。例如:class Photo(models.Model): image = models.ImageField(upload_to='profiles/') # 其他字段...清理无效缓存并重新生成
执行以下命令彻底清理旧缓存,然后重启服务测试:python manage.py thumbnail clear python manage.py thumbnail cleanup手动创建的
cache目录无需删除,sorl 会自动在其中生成对应子目录和缩略图文件。检查 MEDIA 相关配置
确保settings.py中的 MEDIA 配置正确:MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_URL = '/media/'开发环境下,需在项目根 urls.py 中添加 media 文件的访问路由:
from django.conf import settings from django.conf.urls.static import static urlpatterns = [ # 其他路由... ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
内容的提问来源于stack exchange,提问作者Jgold
相关产品推荐
相关产品推荐

