11

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

  1. ли его реализации только в template такая же, как и использовать его в models или view и создать новую миниатюру для каждого из них?
  2. Как настроить различные миниатюры для разных изображений, как это можно сделать в easy_thumbnail?
  3. Как переопределить значения по умолчанию, например: переопределить значение Quality и т.д.

И, наконец, это это правильный способ ее реализации? Любые советы или предложения будут высоко оценены. Спасибо.

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}, 
    }, 
} 

А затем в templa тес я могу просто выбрать один из псевдонимов я, определенных в settings.py:

<img src="/static/{{forum.image |thumbnail_url:'forum' }}"> 

или

<img src="/static/{{forum.image |thumbnail_url:'avatar' }}"> 

ответ

20

Как и многие вещи в Джанго sorl-thumbnail реализуется как просто и элегантно, и то, как вы используя это правильно.

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

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

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

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

Для хранения миниатюр Sorl-thumbnail использует комбинацию базы данных и кэш-памяти. База данных гарантирует, что все миниатюры будут сохранены при перезапуске приложения и/или веб-сервера. Затем миниатюры будут загружаться в кеш памяти (вы догадались) по требованию и, таким образом, обеспечить быстрое время загрузки для пользователя.

Чтобы ответить на ваши вопросы:

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

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

  • Как настроить различные эскизы для различных изображений, так как это может быть сделано в easy_thumbnail?

Все настройки выполняются в {% thumbnail %} теге, если разные эскизы для тех же изображений генерируются, они будут сохранены в ключе, стоимость магазин отдельно.

  • Как переопределить значения по умолчанию, например: переопределить значение качества и т.д.

Есть список параметров здесь: http://sorl-thumbnail.readthedocs.org/en/latest/reference/settings.html, они должны быть установлены в settings.py файл. По умолчанию качество установлено на 95, что довольно велико.

Edit - установить качество JPEG в settings.py

... 
THUMBNAIL_QUALITY = 60 
THUMBNAIL_PROGRESSIVE = False 
... 

Эти два дополнения, в любом месте в settings.py файл для вашего проекта, позволит снизить качество Jpeg для эскизов до 60, и выключаете создание прогрессивных jpeg.

Edit - псевдонимы уменьшенных

Там нет встроенной поддержки псевдонимов миниатюр в sorl-thumbnail. Вероятно, самый простой способ реализовать их - это небольшие вспомогательные шаблоны, которые затем могут быть загружены в ваши основные шаблоны.

Так шаблон страницы, мощь выглядит Somthing как:

.... 
{% 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, хотя для достижения результатов двух небольших шаблонов, указанных выше, потребуется много программирования.

Если у вас есть дополнительные вопросы о sorl-thumbnail, я буду рад помочь вам с ними.

+0

Так ли это достаточно, чтобы реализовать его только в шаблонах? И я посмотрел на документы, но не совсем понял «howto» для настроек. Не могли бы вы добавить фрагмент, касающийся того, как добавлять разные настройки для разных псевдонимов в settings.py для эскизов sorl (например, у одного easy_thumbnails есть, я добавил его в редактирование). – Aamu

+0

Я добавил соответствующее изменение, помогает ли это? –

+0

'{% include x%}' был умным! И как переопределить значения по умолчанию (например: 'качество')? Можно ли это сделать в settings.py как 'easy-thumbnails'? Если да, то как? – Aamu

Смежные вопросы