试着理解Django的sorl-thumbnail
我最近在玩一个叫做 sorl-thumbnail
的东西,它是用来处理Django中的图片缩略图的。我想更好地理解它是怎么工作的。
我看了它的使用指南,把它安装到了我的网站包里,确保PIL(Python Imaging Library)也安装好了,然后在我的 settings.py 文件中把 sorl.thumbnail
加入了 INSTALLED APPS
,在 models.py 的顶部加了 from sorl.thumbnail.fields import ImageWithThumbnailsField
,还在模型字段中添加了 image = ImageWithThumbnailsField(upload to="images/", thumbnail={'size':(80, 80)})
,然后通过视图把模型传递到模板中,在模板顶部加了 {% load thumbnail %}
,并且在里面放了变量 {{ mymodel.image.thumbnail_tag }}
。
但是我理解的是,当我通过后台上传一张图片时,它应该立刻生成缩略图,但实际上只有在我在浏览器中查看模板时才会生成?这是对的吗?缩略图显示得很好,实际上看起来很棒,但我以为添加模型字段后,图片上传后就会立刻生成缩略图?那我为什么不直接在模型中使用 models.ImageField
呢?
...或者说我其实做得都对,只是对它的工作原理理解错了?
2 个回答
在管理后台加个jCrop功能,让用户可以选择缩略图的区域怎么样?这样会很不错哦 :)
我是sorl-thumbnail的开发者之一。
首先,如果你只是用缩略图标签,而不是缩略图字段,那你其实不需要写{% load thumbnail %}
。
现在,缩略图只会在第一次使用的时候创建——即使你使用的是字段[如果没有其他人先做,我会找时间改这个]。使用字段的好处是你可以指定大小,而不是让设计师在模板中自由调整[这对管理员处理缩略图更方便]。
这两种方法都可以,你可以选择最适合你的方式。