How to Create Image Thumbnails in Django

The easiest way to use thumbnails in Django is to create them dynamically with the Sorl Thumbnail package. This will give you the flexibility of easily being able to create thumbnails in an unlimited number of sizes and change them at any time.

 

Another clever feature of Sorl Thumbnail is that it caches thumbnails once they have been generated and will re-cache them if any changes are made.

 

Installation

Make sure your terminal window is using the same virtual Python environment as your project then install Sorl Thumbnail using pip like this:

 

pip install sorl-thumbnail

 

Configuring Django

The next step is to configure your Django project's settings.py file. Add the following to your INSTALLED_APPS array:

 

INSTALLED_APPS = [
   # packages
   "sorl.thumbnail",
]

 

Create Thumbnails in Templates

Now you can create thumbnails in your templates like this:

 

{% load thumbnail %}

{% thumbnail i.image "960x540" crop="center" as im %}
  <img src="/static{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}" alt="{{ i.name }}">
{% endthumbnail %}

 

In the above example, i.image is the image field from the database for the item object.

django