4

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

你能给出一些关于如何在 django 视图中使用这个库的具体例子吗?

提前致谢 : )

4

3 回答 3

11

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

from sorl.thumbnail import get_thumbnail

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

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

my_context = {
    'image_url': im.url,
}
于 2012-06-19T15:22:10.027 回答
8

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

{% load thumbnail %}

{% thumbnail recipe.image "430x250" as thumb %}
     <img src="{{ thumb.url }}" width="{{ thumb.width }}" height="{{ thumb.height }}" alt="{{ recipe.title }}" />
{% endthumbnail %}

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

于 2012-06-19T10:30:35.907 回答
1

当我必须使用 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 %}  

图片按 url/路径

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

{% 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 %}
于 2015-05-07T07:55:10.253 回答