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

Metadata

Release files for django-url-renditions 1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-url-renditions 1.4
File Size Uploaded
django-url-renditions-1.4.tar.gz 6.7 kB Details

Release files / django-url-renditions-1.4.tar.gz

Download URL django-url-renditions-1.4.tar.gz
Size 6.7 kB
Tags Source
SHA-256 checksum
How to use checksums
380ea49f004b11b0efed7a80cadbf600315d20850a89006a08cdd00d304658b9
BLAKE2b-256 checksum
How to use checksums
ba2962a30d5caf1fb599305846b682c72b52e0654fea0416866d3a9847991f2c
Upload date
Uploaded using Trusted Publishing?
What is 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

Release history Release notifications | RSS feed

This release

1.4 This release

1 release file

1.3

1 release file

1.2

1 release file

1.1

1 release file

0.10

1 release file

0.9

1 release file

0.8

1 release file

0.7

1 release file

0.6

1 release file

0.5

1 release file

0.3

1 release file

0.2

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page