Минимальная настройка django-imagekit не работает

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


person Lucas03    schedule 07.01.2016    source источник


Ответы (2)


Вам нужно использовать в своем шаблоне {{ bookmaker.logo_small.url }}, чтобы получить URL-адрес изображения. Затем образ будет создан и сохранен в папке CACHE.

person VStoykov    schedule 09.01.2016
comment
Привет, спасибо за ответ. Я тоже пробовал URL, это не тот случай. Папки пропали. После перезапуска django и ноутбука (я пошел спать) теперь все работает. Однако создается только одно изображение. - person Lucas03; 09.01.2016

Хм, теперь работает. Я ничего не делал. Вероятно, просто требуется некоторое время для создания этих изображений (я не знаю, что нужно для создания изображений), вероятно, перезапуска ./manage.py runserver достаточно.

Может быть, мне нужно звонить ./manage.py generateimages после каждой загрузки?

person Lucas03    schedule 09.01.2016