我如何使用sorl-thumbnail? (django的)

时间:2012-06-19 10:27:17

标签: python django django-models thumbnails sorl-thumbnail

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

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

提前致谢:)

3 个答案:

答案 0 :(得分:10)

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

from sorl.thumbnail import get_thumbnail

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

im然后与您从thumbnail模板标记返回的内容相同。因此,您可以将该变量添加到模板上下文中,或仅添加到模板上下文中。例如,如果您只想要URL:

my_context = {
    'image_url': im.url,
}

答案 1 :(得分: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。

答案 2 :(得分: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 %}  

图片按网址/路径

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

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

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

使用网址加载图片很简单,并且样本:

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