我想上传宽度为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_small
和logo_medium
。如果我打印{{bookmaker.logo_small}}
,我会得到media/CACHE/images/logo/large/bookmaker/24d9f99ffdf277ed3fc25e2cf4d37554.jpg
,这不存在(404)。我是否需要设置CACHE才能使其正常工作?
答案 0 :(得分:0)
您需要在模板{{ bookmaker.logo_small.url }}
中使用以获取图片的网址。然后,图像将被创建并存储在CACHE
文件夹中。
答案 1 :(得分:0)
./manage.py runserver
就足够了。
我可能需要在每次上传后拨打./manage.py generateimages
吗?