Skip to content

Instantly share code, notes, and snippets.

@undernewmanagement
Created December 29, 2020 16:53
Show Gist options
  • Save undernewmanagement/9fca71cb6358be0a58b3b97aae75f788 to your computer and use it in GitHub Desktop.
Save undernewmanagement/9fca71cb6358be0a58b3b97aae75f788 to your computer and use it in GitHub Desktop.
Django template tag to encode an image to a base64 data-uri
from urllib.parse import urlparse
from django import template
from django.template.defaultfilters import stringfilter
from base64 import b64encode
import requests
from django.core.cache import cache
register = template.Library()
@register.filter(is_safe=True)
@stringfilter
def dataURI(url):
parts = urlparse(url)
domain = parts.netloc
encoded = cache.get(f'image-{url}')
if not encoded:
r = requests.get(url)
encoded = b64encode(r.content).decode()
cache.set(f'favicon-{domain}', encoded, None)
return f"data:image/png;base64,{encoded}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment