django-что нужно знать о sorl-thumbnail
Я использую sorl-thumbnail для создания эскизов для моего проекта. Я реализую его только в шаблонах, а не в моделях или представлении. И каждый из миниатюр связан со своим оригинальным изображением, которое используется лайтбоксом. Как новичок, я хотел знать, некоторые из его функций:
- будь то реализация только в
template
это то же самое, что использовать его вmodels
илиview
и создание нового эскиза для каждого из них? - как чтобы настроить различные эскизы для разных изображений, как это можно сделать в
easy_thumbnail
? - как переопределить значения по умолчанию, например: переопределить значение
Quality
, etc.
и, наконец, является ли это правильным способом его реализации? Любые советы или предложения будут высоко ценится. Спасибо.
HTML-код:
{% for photo in photos %}
<div class="thumbnail_container">
<a href="{{MEDIA_URL}}{{photo.image}}" class="gallery" title="{{photo.title}}">
{% thumbnail photo.image "200x200" as im %}
<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}" class="thumbnail">
{% endthumbnail %}
</a>
</div>
{% endfor %}
Edit:
как добиться чего-то подобного для эскизов sorl, что можно сделать в легко-миниатюры:
settings.py
THUMBNAIL_ALIASES = {
'': {
'avatar': {'size': (100,100), 'crop': True},
'forum': {'size': (203,103), 'crop':False},
},
}
а затем в шаблонах я могу просто выбрать из псевдонимов, которые я определил в settings.py:
<img src="/static/{{forum.image |thumbnail_url:'forum' }}">
или
<img src="/static/{{forum.image |thumbnail_url:'avatar' }}">
1 ответов
как и многие вещи в Django sorl-thumbnail
реализован просто и элегантно, и то, как вы его используете, правильно.
каждый раз sorl-thumbnail
запрашивается новый эскиз, он проверяет, существует ли он в его кэше:
- если он существует, этот возвращается.
- если это не так, создается и сохраняется новый, а затем возвращается.
таким образом, кэш эскизов создаются по мере необходимости. Ключ,магазин, стоимость средство хранения эскизов, которое позволяет им быстро искать и извлекать. С помощью описанных выше шагов эскизы будут сгенерированы и сохранены по запросу пользователей.
процесс генерации миниатюр "по требованию" работает хорошо, поскольку изображения постепенно добавляются на ваш сайт, миниатюры для новых изображений будут созданы по мере необходимости, а миниатюры для старых изображений, полученных из магазина.
для хранения эскизов Sorl-thumbnail
использует сочетание база данных и кэш-память. База данных гарантирует, что все эскизы будут сохранены при перезапуске приложения или веб-сервера. Затем миниатюры будут загружены в кэш памяти (вы догадались) по требованию и, таким образом, обеспечат быстрое время загрузки для пользователя.
чтобы ответить на ваши вопросы:
- является ли реализация его только в шаблоне такой же, как использование его в моделях или представлении и создание нового эскиза для каждого один?
невозможно создать миниатюры в моделях или представлениях, так как они создаются по требованию, по запросу пользователя. Это очень эффективно. Я думаю, вы могли бы написать сценарий для запроса всех эскизов, который был запущен на ночной основе, чтобы гарантировать, что все эскизы генерируются, хотя это, вероятно, не требуется.
- как настроить различные эскизы для разных изображений, как это можно сделать в easy_thumbnail?
все настройки в {% thumbnail %}
тег, если генерируются разные эскизы для одного и того же изображения, они будут храниться в ключе, хранилище значений отдельно.
- как переопределить значения по умолчанию, например: переопределить значение качества и т. д.
здесь есть список настроек: http://sorl-thumbnail.readthedocs.org/en/latest/reference/settings.html, все это должно быть установлено в . По умолчанию качество установлено на 95, что довольно высоко.
Edit-установить качество jpeg в settings.py
...
THUMBNAIL_QUALITY = 60
THUMBNAIL_PROGRESSIVE = False
...
эти два дополнения, в любом месте settings.py
файл для вашего проекта, уменьшит качество jpeg для эскизов до 60 и отключит создание прогрессивных jpeg.
Edit-уменьшенные псевдонимы
нет встроенной поддержки псевдонимов миниатюр в sorl-thumbnail
. Вероятно, самый простой способ реализовать их-это небольшие подшаблоны, которые затем можно загрузить в ваши основные шаблоны.
таким образом, шаблон страницы, может выглядеть так:
....
{% load thumbnail %}
....
<h3>Recent image uploads:</h3>
{% for item in recentUploads %}
{% include "bigThumbnail.html" %}
{% endfor %}
<h3>Older image uploads</h3>
{% for item in oldUploads %}
{% include "smallThumbnail.html" %}
{% endfor %}
....
шаблоны для эскизов будут храниться в виде отдельных файлов в каталоге шаблонов и могут выглядеть как-то например:
bigThumbnail.HTML-код
{% thumbnail item.image "100x100" crop="center" as im %}
<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}
smallThumbnail.HTML-код
{% thumbnail item.image "40x40" crop="center" as im %}
<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}
в каждом из под шаблонов, все настройки для ваших "псевдонимов" могут быть сделаны. Кроме того, можно было бы создать дополнительный тег шаблона для чтения этих атрибутов из settings.py
, это easy_thumbnail
делает, хотя потребуется много программирования для достижения результатов 2 небольших шаблонов выше.
если у вас есть дополнительные вопросы о sorl-thumbnail
, Я был бы рад помочь вам с ними.