9

我尝试使用 Django sorl-thumbnail 但它不显示图像(并且不显示任何错误)。

设置.py:

INSTALLED_APPS = (
    ....
    'sorl.thumbnail',
)

楷模:

class Toy(models.Model):
    name = models.CharField(max_length=50, verbose_name=u'Name')
    image = ImageField(upload_to='site_media/images')

模板:

<div id="toy">
                {% for p in toys %}
                    <div class="toy">
                                # toy.image - this is model_name.image field
                            {% thumbnail toy.image "100x700" as im %}
                            <img style="margin:{{ im|margin:"100x700" }}" src="{{ im.url }}" width="{{ im.x }}" height="{{ im.y }}">
                            {% endthumbnail %}

                            <p>
                            <span> {{ p.name }} </span>
                            <span> {{p.unit_price}} </span>
                            </p>
                    </div>
                {% endfor %}
            </div>

网址.py:

url(r'^site_media/(.*)$', 'django.views.static.serve', {'document_root' : os.path.join(os.path.dirname(__file__), 'site_media')}),
4

2 回答 2

14

实际上,使用 sorl 的 ImageField 只需要在删除原始图像时自动删除缩略图。

sorl.thumbnail 默认不显示任何错误,如果缩略图创建不成功,则会静默失败。要查看错误,请添加

THUMBNAIL_DEBUG = True

到你的 settings.py。这应该可以帮助您解决问题。

于 2012-10-07T10:29:15.267 回答
3

您是否在模型定义中从 sorl 导入了 ImageField?有必要让它自动工作。

此外,您需要在控制台中运行, ./manage.py syncdb因为在默认配置中,sorl 将缓存的缩略图名称保存在数据库中。为此,它必须在数据库中创建自己的表。

您能否还显示您的 STATIC_URL、STATICFILES_DIRS 等设置?

于 2012-10-07T10:02:59.487 回答