Skip to main content

A Django app that automates thumbnail creation for image fields.

Project description

Django Advance Thumbnail

Django Advance Thumbnail is a Django app that automates thumbnail creation for image fields. It generates, updates, and deletes thumbnails based on the source image, and allows custom thumbnail sizes.

Installation

  1. Install the package using pip:
pip install django_advance_thumbnail

Note: Starting from version 1.1.0, this package uses the modern pyproject.toml configuration instead of the legacy setup.cfg. See MIGRATION_GUIDE.md for details.

  1. Add django_advance_thumbnail to your INSTALLED_APPS in settings.py:
INSTALLED_APPS = [
    # ...
    'django_advance_thumbnail',
    # ...
]

Usage

Here's a basic example of how to use the AdvanceDJThumbnailField in a model:

from django.db import models

from django_advance_thumbnail import AdvanceThumbnailField


class MyModel(models.Model):
    image = models.ImageField(upload_to='images/', null=True, blank=True)
    thumbnail = AdvanceThumbnailField(source_field='image', upload_to='thumbnails/', null=True, blank=True,
                                      size=(300, 300)) 

In this example, AdvanceDJThumbnailField is used to create a thumbnail from the image field. Whenever an image is uploaded or updated, a corresponding thumbnail is automatically generated and stored in the thumbnail field. The thumbnail's dimensions are determined by the optional size parameter, which defaults to (300, 300) if not specified.

This setup ensures that the lifecycle of the thumbnail is tied to its source image. If the source image is deleted, the associated thumbnail is also removed. This seamless synchronization simplifies image management in your Django models.

Advanced Features

Management Commands

Generate Thumbnails for Existing Images

When adding AdvanceThumbnailField to existing models in production:

# Generate thumbnails for all models
python manage.py generate_thumbnails

# Generate for specific model
python manage.py generate_thumbnails --model myapp.MyModel

# Force regenerate existing thumbnails
python manage.py generate_thumbnails --force

Regenerate Thumbnails After Size Changes

When you change the size parameter:

# Regenerate thumbnails with new sizes
python manage.py regenerate_thumbnails

# Force regenerate all thumbnails
python manage.py regenerate_thumbnails --force

Automatic Size Change Detection

The field automatically detects when thumbnail sizes change and regenerates them accordingly:

class MyModel(models.Model):
    image = models.ImageField(upload_to='images/', null=True, blank=True)
    thumbnail = AdvanceThumbnailField(
        source_field='image', 
        upload_to='thumbnails/', 
        null=True, 
        blank=True,
        size=(400, 400)  # Changed from (300, 300) - will auto-regenerate
    )

Smart Regeneration

By default, thumbnails are only regenerated when:

  • The source image changes (detected automatically)
  • The thumbnail size parameter changes
  • The thumbnail doesn't exist
thumbnail = AdvanceThumbnailField(
    source_field='image', 
    upload_to='thumbnails/', 
    null=True, 
    blank=True,
    size=(300, 300)  # Efficient - only regenerates when needed
)

Force Regeneration (Override)

Use force_regenerate=True only if you need to regenerate thumbnails on every save (not recommended for production):

thumbnail = AdvanceThumbnailField(
    source_field='image', 
    upload_to='thumbnails/', 
    null=True, 
    blank=True,
    size=(300, 300),
    force_regenerate=True  # Regenerates on every save - use sparingly
)

For detailed usage instructions, see the Usage Guide.

Contact

For any questions or feedback, feel free to reach out:

Credits

This package was created by Mahadi Hassan. Special thanks to the Django and Python communities for their invaluable resources and support.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_advance_thumbnail-1.1.2.tar.gz (22.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_advance_thumbnail-1.1.2-py3-none-any.whl (27.7 kB view details)

Uploaded Python 3

File details

Details for the file django_advance_thumbnail-1.1.2.tar.gz.

File metadata

  • Download URL: django_advance_thumbnail-1.1.2.tar.gz
  • Upload date:
  • Size: 22.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for django_advance_thumbnail-1.1.2.tar.gz
Algorithm Hash digest
SHA256 61b43bf51e709f579df382853ff290695988a7efc7eb749469a1cfd3ffabf97c
MD5 fdf76243178aab5df53e87ae6f029358
BLAKE2b-256 b9c5463e9c4b308b25b90c66bc661872f41397190252c576f0e18a45de6872c2

See more details on using hashes here.

File details

Details for the file django_advance_thumbnail-1.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for django_advance_thumbnail-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d948f4406afd68178165b21acd0b3621bdbdae0006ad9520e156ef29499879ae
MD5 ad396c643f4c3af1b25796ec218a39fb
BLAKE2b-256 af06378711904158343e26e2e590740ba1a7620b6cedad1d504ce26f5f3ee480

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page