【发布时间】:2012-10-02 00:39:41
【问题描述】:
我有一个项目,我需要开始为用户上传的图像创建动态调整大小的缩略图,而之前我一直在生成一些特定大小的缩略图。我有一个现有模型,它代表一个看起来像这样的图像:
class Image(models.Model):
original = models.URLField()
small = models.URLField()
medium = models.URLField()
large = models.URLField()
其中每一个都填写了指向 S3 上相应图像的 URL。在上传时,所有版本都被创建(实际上是在不久之后,通过计划任务),存储在 S3 中,然后在模型上设置。展望未来,我们的设计需要为每个缩略图提供许多不同的大小,因此将它们全部存储在数据库中是不切实际的。我想保留original 并在模板中即时完成其余的工作。
所以这就是我来到sorl-thumbnail 的地方。它似乎打算做我想做的事,但我有点迷失它应该如何工作(目前还没有)。作为一项测试,我制作了一个基本视图/模板,其中列出了一些图像并尝试对其进行缩略图,就像教程一样:
{% for img in image_set %}
{% thumbnail img.original "180x180" crop="center" format="PNG" as im %}
<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}
{% endfor %}
最终会为文件生成一个 URL,例如 cache/84/8f/848fb078f2e8d35aecd92150c6fa6843.png(即 404s)。我不确定我是否了解该文件应该存储在哪里。我假设它正在拉入 S3 文件,然后在 somewhere 创建缩略图,但我不清楚它在哪里,以及我应该从哪里提供它。这一切现在都在本地开发服务器上,使用 memcached(我可以看到正在设置缓存条目)。 PIL 安装在我的环境中,支持 jpeg/png。
【问题讨论】:
-
这给出了它如何工作的示意图 docs.google.com/drawings/…。您的缩略图正在存储在 memcached 中,对吗?所以某处是memcached。如果您无法访问缓存,那是另一个问题。
-
呃,嗯,是的,我想这可能是问题所在。如何访问 memcached 中的文件?它在 127.0.0.1:11211 本地运行。
-
远程登录本地主机 11211;得到 ;更多命令 - code.google.com/p/memcached/wiki/NewCommands#stats
-
对不起,我的意思是在浏览器中。我不明白我需要如何从 memcached 中取出文件来为它们提供服务。
标签: django amazon-s3 memcached sorl-thumbnail