我想上传宽度400 to的图片,并得到另外两个图像-200 to和100 to。我在谷歌上搜索了一下,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)。我需要设置缓存才能工作吗?
发布于 2016-01-09 20:20:22
嗯,现在起作用了。我什么也没做。可能只是需要一些时间来生成这些映像(我不知道生成图像需要什么),可能重启./manage.py runserver就足够了。
也许我每次上传后都需要打电话给./manage.py generateimages?
发布于 2016-01-09 18:09:51
您需要在模板{{ bookmaker.logo_small.url }}中使用以获取图像的URL。然后,图像将被创建并存储在CACHE文件夹中。
https://stackoverflow.com/questions/34662661
复制相似问题