django-imagekit最小设置不起作用

时间:2016-01-07 18:35:58

标签: django django-imagekit imagekit

我想上传宽度为400px的图片并获得另外两张图片 - 200px和100px。我用Google搜索,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的工作原理。我是否需要在我的应用中设置CACHE?它是否在MEDIA文件夹中物理创建文件? 好吧我的设置不起作用。当我上传图片logo_large时,会创建大文件,但不会创建logo_smalllogo_medium。如果我打印{{bookmaker.logo_small}},我会得到media/CACHE/images/logo/large/bookmaker/24d9f99ffdf277ed3fc25e2cf4d37554.jpg,这不存在(404)。我是否需要设置CACHE才能使其正常工作?

2 个答案:

答案 0 :(得分:0)

您需要在模板{{ bookmaker.logo_small.url }}中使用以获取图片的网址。然后,图像将被创建并存储在CACHE文件夹中。

答案 1 :(得分:0)

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

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