Как использовать sorl-thumbnail? (Джанго)

Я просматривал документацию по sorl-thumbnail и до сих пор не могу понять, как: 1. загружать изображения в sorl-thumbnail. 2. выборочно показывать изображения из sorl-thumbnail. (например, загрузить конкретное изображение из sorl-thumbnail из представления и показать его с настроенным размером и т. д.)

Не могли бы вы привести несколько конкретных примеров того, как использовать эту библиотеку в представлении django?

Заранее спасибо : )


person user269334    schedule 19.06.2012    source источник


Ответы (3)



Вы можете использовать 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-адрес изображения.

person Simeon Visser    schedule 19.06.2012
comment
Спасибо за ответ: D кстати, я не могу выборочно показывать изображения из БД с помощью sorl-thumb? Кроме того, можете ли вы привести пример части просмотра django? (не только часть шаблона) Еще раз спасибо - person user269334; 19.06.2012
comment
В представлении нет кода для миниатюр (если вы этого не хотите). В приведенном выше примере это изображение модели Recipe. Вы можете передать переменную в шаблон, если хотите (например, image = ..., а затем заменить recipe.image на image). - person Simeon Visser; 19.06.2012
comment
Просто чтобы было понятно, так как я тоже пытаюсь это понять. Sorl не сохраняет изображения в базе данных, вместо этого у него есть собственное хранилище файловой системы? По сути, мне нужно загрузить изображение только одного размера, а затем просто запросить любой размер, который я хочу, и в этом случае sorl либо сгенерирует это изображение на лету, либо извлечет его, если оно было создано ранее из его собственного хранилища? - person mgPePe; 07.01.2015

Когда мне приходится использовать sorl-thumbnail, я различаю два типа изображений:

Объекты Django с ImageField

Когда у меня есть объект в 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 %}
person AlvaroAV    schedule 07.05.2015