from django.core.files.storage import Storage import requests class HTTPStorage(Storage): def __init__(self, protocol='https'): self.protocol = protocol def _open(self, name, mode='rb'): if mode != 'rb': raise IOError("Mode must be 'rb'") r = requests.get(self.url(name), stream=True) r.raise_for_status() return r.raw def _save(self, name, content): raise NotImplementedError("Unable to save to web locations") def url(self, name): return f"{self.protocol}:{name}" def exists(self, name): r = requests.head(self.url(name)) return r.status_code == 200