Я хочу загрузить изображение шириной 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). Нужно ли настраивать КЭШ, чтобы он работал?