如何使用 sorl-thumbnail? (django)

Posted

技术标签:

【中文标题】如何使用 sorl-thumbnail? (django)【英文标题】:How do I use sorl-thumbnail? (django) 【发布时间】:2012-06-21 09:08:51 【问题描述】:

我一直在查看 sorl-thumbnail 的文档,但我仍然不知道如何: 1.上传图片到sorl-thumbnail。 2. 选择性地显示来自 sorl-thumbnail 的图像。 (例如,从视图中从 sorl-thumbnail 加载特定图像并显示它,自定义大小等)

您能否举一些具体的例子来说明如何在 django 视图中使用这个库?

提前致谢:)

【问题讨论】:

【参考方案1】:

如果您想要更大的灵活性,您可以在视图中生成缩略图。以下直接来自sorl-thumbnail documentation:

from sorl.thumbnail import get_thumbnail

im = get_thumbnail(my_file, '100x100', crop='center', quality=99)

im then 与您从 thumbnail 模板标签返回的内容相同。因此,您可以将该变量添加到模板上下文中,或者只是其中的一部分。例如,如果您只想要 URL:

my_context = 
    'image_url': im.url,

【讨论】:

【参考方案2】:

您可以通过缩略图模板标签来使用 sorl.thumbnail。这是一个例子:

% load thumbnail %

% thumbnail recipe.image "430x250" as thumb %
     <img src=" thumb.url "    />
% endthumbnail %

您不会将图像上传到 sorl.thumbnail 或从 sorl.thumbnail 加载它们。正确配置后,它会自动调整大小并存储图像,您可以使用thumbnail模板标签来获取图像的正确URL。

【讨论】:

感谢您的回复 :D 顺便说一句,我没有办法使用 sorl-thumb 选择性地显示数据库中的图像吗?另外,你能给我一些示例 django 视图部分吗? (不仅仅是模板部分)再次感谢 视图没有缩略图代码(除非你想)。在上面的示例中,它是一个食谱模型的图像。如果您愿意,可以将视图中的变量传递给模板(例如,image = ...,然后将 recipe.image 替换为 image)。 只是为了说清楚,因为我也在努力理解它。 Sorl 不将图像保存在数据库中,而是拥有自己的文件系统存储?本质上,我只需要上传一个尺寸的图像,然后只需请求我想要的任何尺寸,在这种情况下,sorl 要么即时生成该图像,要么获取它,如果它之前是从它自己的存储中生成的?【参考方案3】:

当我必须使用 sorl-thumbnail 时,我会区分两种图像:

带有 ImageField 的 Django 对象

当我在 Django 中有一个带有 ImageField 的对象时,我会使用这样的缩略图来渲染它:

# Let's supose our object imagefield is called img
% thumbnail obj.img "100" upscale=false as im %
   <img src=" im.url "/>
% empty %  # In case the object doesn't have an image, use generic one
   % thumbnail "img/empty_img.jpg" "236" upscale=false as im %
        <img src=" im.url " />
   % endthumbnail %
% endthumbnail %  

图片按网址/路径

使用项目的本地路径加载图片:

% thumbnail "img/myImage.jpg" "236" upscale=false as im %
    <img src=" im.url " />
% endthumbnail %

重要提示:请记住,缩略图将 MEDIA_URL 连接到您提供的路径,因此在这种情况下,您需要像 yourapp/media/img/myImage.jpg 这样的路径

使用 URL 加载图片非常简单且示例:

% thumbnail "http://www.nextgen-gallery.com/wp-content/uploads/2008/12/abend.jpg" "236" upscale=false as im %
    <img src=" im.url " />
% endthumbnail %

【讨论】:

以上是关于如何使用 sorl-thumbnail? (django)的主要内容,如果未能解决你的问题,请参考以下文章

我不明白 sorl-thumbnail 如何使用 db 和缓存

关于使用带有远程存储的 sorl-thumbnails 的 celery 的指针?

使用 sorl-thumbnail 的可疑操作

sorl-thumbnail 不生成占位符图像

django:无法让 sorl-thumbnail 工作

sorl-thumbnail 的模板标签啥都不做