Я внедряю 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, но никогда раньше не реализовывал его. Заранее благодарим!

1
thomallen 30 Июл 2010 в 01:06

2 ответа

Лучший ответ

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

1
Justin Driscoll 31 Июл 2010 в 19:39

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

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

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

1
ars 30 Июл 2010 в 00:54