django-imagekit 最小设置不起作用

django-imagekit minimal setup not working

我想上传宽度为 400 像素的图片并获得另外两张图片 - 200 像素和 100 像素。我用谷歌搜索 django-imagekit 看起来它可以做到这一点。
所以我将 imagekit 添加到 INSTALLED_APPS 并将其添加到我的模型中:

from imagekit.models import ImageSpecField
from imagekit.processors import ResizeToFit
class Bookmaker(models.Model):
    ...
    logo_large = models.ImageField(upload_to="logo/large")
    logo_medium = ImageSpecField([ResizeToFit(width=200)], source='logo_large', options={'quality': 90})
    logo_small = ImageSpecField([ResizeToFit(width=100)], source='logo_large', options={'quality': 90})

这是我的表格:

@staff_member_required
def new(request):
    if request.method == 'POST':
        form = BookmakerForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
    else:
        form = BookmakerForm()
    template = loader.get_template('bookmaker/new.html')
    context = RequestContext(request, {
        'form': form,
    })
    return HttpResponse(template.render(context))

我浏览了文档,但无法理解 imagekit 的工作原理。我需要在我的应用程序中设置缓存吗?它会在 MEDIA 文件夹中创建物理文件吗?
那么我的设置不起作用。当我上传图片 logo_large 时,会创建大文件,但 logo_smalllogo_medium 不会。如果我打印 {{bookmaker.logo_small}},我得到 media/CACHE/images/logo/large/bookmaker/24d9f99ffdf277ed3fc25e2cf4d37554.jpg,它不存在 (404)。我是否需要设置 CACHE 才能使其正常工作?

您需要在模板中使用 {{ bookmaker.logo_small.url }} 来获取图像的 URL。然后将创建图像并将其存储在 CACHE 文件夹中。

嗯,现在可以了。我什么也没有做过。可能只需要一些时间来生成那些图像(我不知道生成图像需要什么),可能重启./manage.py runserver就足够了。

我可能需要在每次上传后调用 ./manage.py generateimages 吗?