我想上传宽度为 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_small
不是logo_medium
。如果我打印{{bookmaker.logo_small}}
我得到media/CACHE/images/logo/large/bookmaker/24d9f99ffdf277ed3fc25e2cf4d37554.jpg
,它不存在 (404)。我是否需要设置 CACHE 才能使其工作?