Django / Grade 1 / Оптимизация изображений
https://pypi.org/project/easy-thumbnails/
Run pip install easy-thumbnails.
Add easy_thumbnails to your INSTALLED_APPS setting:
INSTALLED_APPS = (
...
'easy_thumbnails',
)
Run manage.py migrate easy_thumbnails.
Thumbnail options can be predefined in settings.THUMBNAIL_ALIASES or just specified in the template or Python code when run.
Given the following setting:
THUMBNAIL_ALIASES = {
'': {
'avatar': {'size': (50, 50), 'crop': True},
},
}
Template:
{% load thumbnail %}
<img src="{{ profile.photo|thumbnail_url:'avatar' }}" alt="" />
Python:
from easy_thumbnails.files import get_thumbnailer
thumb_url = get_thumbnailer(profile.photo)['avatar'].url
Template:
{% load thumbnail %}
<img src="{% thumbnail profile.photo 50x50 crop %}" alt="" />
Python:
from easy_thumbnails.files import get_thumbnailer
options = {'size': (100, 100), 'crop': True}
thumb_url = get_thumbnailer(profile.photo).get_thumbnail(options).url
Alternatively, you load the templatetags by {% load easy_thumbnails_tags %} instead of traditional {% load thumbnail %}. It’s especially useful in projects that do make use of multiple thumbnailer libraries that use the same name (thumbnail) for the templatetag module:
{% load easy_thumbnails_tags %}
<img src="{% thumbnail profile.photo 50x50 crop %}" alt="" />
You can use ThumbnailerImageField (or ThumbnailerField) for easier access to retrieve or generate thumbnail images.
For example:
from easy_thumbnails.fields import ThumbnailerImageField
class Profile(models.Model):
user = models.OneToOneField('auth.User')
photo = ThumbnailerImageField(upload_to='photos', blank=True)
Accessing the field’s predefined alias in a template:
{% load thumbnail %}
<img src="{{ profile.photo.avatar.url }}" alt="" />
Accessing the field’s predefined alias in Python code:
thumb_url = profile.photo['avatar'].url