我一直在查看sorl-thumbnail的文档,我仍然无法弄清楚如何: 1.将图像上传到sorl-thumbnail。 2.有选择地显示来自sorl-thumbnail的图像。 (例如,从视图中加载来自sorl-thumbnail的特定图像并显示它,具有自定义大小等)。
你能举一些关于如何在django视图中使用这个库的具体例子吗?
提前致谢:)
答案 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时,我会在两种图像之间产生差异:
当我在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 %}