Django ImageKit什么时候创建缩略图文件?



我试图了解Django ImageKit如何在创建缩略图文件(例如)方面工作。我正在使用示例代码:

from django.db import models
from imagekit.models import ImageSpecField
from imagekit.processors import ResizeToFill
class Profile(models.Model):
    avatar = models.ImageField(upload_to='avatars')
    avatar_thumbnail = ImageSpecField(source='avatar',
                                      processors=[ResizeToFill(100, 50)],
                                      format='JPEG',
                                      options={'quality': 60})

我正在从应用程序上传头像图像。在配置文件表中创建的条目和在AWS S3中创建的文件可以正常工作。我正在努力理解的是何时/何地/如何创建avatar_缩略图。我是否必须做一些显式的事情来将其与头像图像一起存储在AWS S3中?还是avatar_thumbnail只是在运行中创建的?我需要把它存储在某个地方以备以后使用。

我不完全明白,但据我所知,缩略图是一个生成器,仅在首次请求缩略图时调用,然后缓存。

我个人的经验也说明了这一点。我通过管理界面创建了模型的虚拟实例(与上面的代码相同)。然后,我创建了一个html页面,显示带有模板标记的缩略图(<img src="instance.thumbnail.url">)。检查我的文件夹,目前还没有生成图像。然后启动服务器,导航到那个页面。在第一次尝试时,它需要花费不寻常的时间来加载(这表明正在创建缩略图),但随后它会加速。文件就在那里。

默认情况下,ImageKit在需要时生成ImageSpecField图像,而不是在创建模型对象时生成。要更改这种行为,可以使用缓存文件策略。IMAGEKIT_DEFAULT_CACHEFILE_STRATEGY的默认值为JustInTime,可以修改为在模型对象创建时创建图像的Optimistic,也可以自定义策略。

此外,您可以通过提供cachefile_strategy参数为单个ImageSpecField设置不同的策略。

最新更新