django-что нужно знать о sorl-thumbnail

Я использую sorl-thumbnail для создания эскизов для моего проекта. Я реализую его только в шаблонах, а не в моделях или представлении. И каждый из миниатюр связан со своим оригинальным изображением, которое используется лайтбоксом. Как новичок, я хотел знать, некоторые из его функций:

  1. будь то реализация только в template это то же самое, что использовать его в models или view и создание нового эскиза для каждого из них?
  2. как чтобы настроить различные эскизы для разных изображений, как это можно сделать в easy_thumbnail?
  3. как переопределить значения по умолчанию, например: переопределить значение 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 запрашивается новый эскиз, он проверяет, существует ли он в его кэше:

  1. если он существует, этот возвращается.
  2. если это не так, создается и сохраняется новый, а затем возвращается.

таким образом, кэш эскизов создаются по мере необходимости. Ключ,магазин, стоимость средство хранения эскизов, которое позволяет им быстро искать и извлекать. С помощью описанных выше шагов эскизы будут сгенерированы и сохранены по запросу пользователей.

процесс генерации миниатюр "по требованию" работает хорошо, поскольку изображения постепенно добавляются на ваш сайт, миниатюры для новых изображений будут созданы по мере необходимости, а миниатюры для старых изображений, полученных из магазина.

для хранения эскизов 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, Я был бы рад помочь вам с ними.