Django中的ImageKit

1 投票
2 回答
1713 浏览
提问于 2025-04-16 02:02

我在一个Django应用中实现ImageKit,按照我的理解,所有设置都已经正确完成。当我运行这个命令时:

$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,但我以前从未实现过。提前谢谢大家!

2 个回答

1

这可能只是提问时格式上的错误,而不是你代码的问题。不过,IKOptions 应该放在你的模型类里面:

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

另外,在你运行 ikflush 之前,你有没有在设置文件的 INSTALLED_APPS 中添加 ImageKit 呢?

1

你的ProductImage模型需要从imagekit.models.ImageModel这个类继承,而不是从models.Model继承。

撰写回答