Skip to main content

Create custom renditions from django url fields

Project description

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

Project details


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.

Supported by

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