ImageKit в Джанго

Я внедряю ImageKit в приложение Django, и, насколько мне известно, все настроено правильно. Когда я запускаю команду

$python manage.py ikflush main

кажется, что команда работает нормально, но ничего не происходит. Ни одно из изображений не изменяется в размере или не сохраняется, и к ним нельзя получить доступ.

main.models.py:

class ProductImage(models.Model):
    product = models.ForeignKey(Product)
    image = models.CharField(max_length=255, null=True, blank=True)
    original = models.ImageField(upload_to='uploads/product-images/zoom/')

    class IKOptions:
        spec_module = 'main.specs'
        cache_dir = 'uploads/cache'
        image_field = 'original'

main.specs.py:

from imagekit.specs import ImageSpec 
from imagekit import processors 

class ResizeSmall(processors.Resize): 
    width = 230 
    height = 289 
    crop = False

class SmallImage(ImageSpec): 
    access_as = 'small_image' 
    pre_cache = True 
    processors = [ResizeSmall]

в шаблоне: (ничего не печатает)

{% for image in images %}
    {{ image.small_image }}<br />
{% endfor %}

У кого-нибудь есть идеи, как это отладить? Я действительно хочу использовать ImageKit для этого, но я никогда не реализовывал его раньше. Заранее спасибо!


person thomallen    schedule 29.07.2010    source источник


Ответы (2)


Ваша модель ProductImage должна наследоваться от imagekit.models.ImageModel вместо models.Model.

person Justin Driscoll    schedule 31.07.2010
comment
Вот оно! Ты человек! Теперь, если я смогу просто заставить работать поддержку Jpeg в PIL... ха-ха. - person thomallen; 02.08.2010

Это может быть просто ошибка форматирования в вопросе, а не в вашем коде. Но IKOptions должен быть вложен в класс вашей модели:

class ProductImage(models.Model):
    # fields, etc...
    class IKOptions:
        # ...

Кроме того, перед запуском ikflush вы добавили ImageKit в INSTALLED_APPS в файле настроек?

person ars    schedule 30.07.2010
comment
Да, это просто ошибка из-за того, как stackoverflow отрисовывал ее. Я исправил его сейчас, поэтому теперь он должен отражать, что он вложен внутри модели. Также у меня есть «imagekit», добавленный в INSTALLED_APPS. - person thomallen; 30.07.2010