如何使用 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 和缓存