Created
December 4, 2020 00:19
-
-
Save tubaman/e35bb913eb712e87b9d5997d32eeec80 to your computer and use it in GitHub Desktop.
Remote Template Loader for Django
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from urllib.request import urlopen | |
from django.conf import settings | |
from django.template import Origin, TemplateDoesNotExist | |
from django.template.loaders.base import Loader as BaseLoader | |
from django.utils.module_loading import import_string | |
class Loader(BaseLoader): | |
def get_contents(self, origin): | |
remote_template_settings = settings.REMOTETEMPLATELOADER_TEMPLATES | |
template_settings = remote_template_settings[origin.template_name] | |
resource = urlopen(origin.name) | |
encoding = resource.headers.get_content_charset() | |
if encoding is None: | |
encoding = 'utf-8' | |
page = resource.read().decode(encoding) | |
#file('/tmp/page.html', 'wb').write(page) | |
#page = file('/tmp/page.html', 'rb').read() | |
try: | |
templatifier = template_settings['templatifier'] | |
except KeyError: | |
pass | |
else: | |
templatify = import_string(templatifier) | |
page = templatify(page) | |
return page | |
def get_template_sources(self, template_name, template_dirs=None): | |
remote_template_settings = settings.REMOTETEMPLATELOADER_TEMPLATES | |
try: | |
template_settings = remote_template_settings[template_name] | |
except KeyError: | |
return | |
for url in template_settings['urls']: | |
yield Origin(name=url, template_name=template_name, loader=self) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment