Skip to main content

django-url-renditions

django-url-renditions allows to define and render renditions from django url fields. This works also pretty well with django-s3direct fields.

It comes with a Graphene Query that enable renditions in your GraphQL schema.

Install

pip install django-url-renditions

Add url_renditions to your INSTALLED_APPS

Define your model

from django.db import models
from url_renditions.fields import FileUrlWithRenditions

# django-url-renditions comes with a simple image resizer method.
# Look at the implementation if you need something more specific
from url_renditions.resize_image import ResizeImage

class Track(models.Model):
    original_artwork = models.URLField()
    artwork = FileUrlWithRenditions(
        source='original_artwork',
        use_job_runner=True, #  if we want to queue the job with django_rq
        renditions={
            'small': ResizeImage('80x80'),
            'medium': ResizeImage('300x300'),
        }
    )

That way, when a Track model get created with an original_artwork, artwork will be automatically polulated with two renditions: small and medium.

To access them, use:

r = my_track.artwork.rendition_set.get(name='small')
print('url:', r.href, 'width:', r.width, 'height:', r.height)

Graphql with Graphene

Add url_renditions.graphql_schema.Query to your root query.

import graphene
import url_renditions.graphql_schema  # noqa

class Query(
        ...
        url_renditions.graphql_schema.Query,
        graphene.ObjectType):
    pass

schema = graphene.Schema(query=Query)

Then when you ask for

{
  track(id: "VHJhY2s6OA==") {
    artwork {
      renditions {
        medium {
          href
          width
          height
        }
      }
    }
  }
}

You get

{
  "data": {
    "track": {
      "artwork": {
        "renditions": {
          "medium": {
            "href": "https://images.unsplash.com/photo-1474314170901-f351b68f544f",
            "width": 300,
            "height": 300
          }
        }
      }
    }
  }
}

Download files

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

Source Distribution

django-url-renditions-1.4.tar.gz (6.7 kB view details)

Uploaded Source

File details

Details for the file django-url-renditions-1.4.tar.gz.

File metadata

  • Download URL: django-url-renditions-1.4.tar.gz
  • Upload date:
  • Size: 6.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.8.5

File hashes

Hashes for django-url-renditions-1.4.tar.gz
Algorithm Hash digest
SHA256 380ea49f004b11b0efed7a80cadbf600315d20850a89006a08cdd00d304658b9
MD5 5b1b70d477733875c75662903543f67d
BLAKE2b-256 ba2962a30d5caf1fb599305846b682c72b52e0654fea0416866d3a9847991f2c

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.4 This release

1 file

1.3

1 file

1.2

1 file

1.1

1 file

0.10

1 file

0.9

1 file

0.8

1 file

0.7

1 file

0.6

1 file

0.5

1 file

0.3

1 file

0.2

1 file

0.1

1 file

Supported by

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