from jinja2 import loaders def jinja_loader_from_django_loader(django_loader): """Attempts to make a conversion from the given Django loader to an similarly-behaving Jinja loader. :param django_loader: Django loader module string. :return: The similarly-behaving Jinja loader, or None if a similar loader could not be found. """ for substr, func in _JINJA_LOADER_BY_DJANGO_SUBSTR.iteritems(): if substr in django_loader: return func() return None def _make_jinja_app_loader(): """Makes an 'app loader' for Jinja which acts like :mod:`django.template.loaders.app_directories`. """ from django.template.loaders.app_directories import app_template_dirs return loaders.FileSystemLoader(app_template_dirs) def _make_jinja_filesystem_loader(): """Makes a 'filesystem loader' for Jinja which acts like :mod:`django.template.loaders.filesystem`. """ from django.conf import settings return loaders.FileSystemLoader(settings.TEMPLATE_DIRS) # Determine loaders from Django's conf. _JINJA_LOADER_BY_DJANGO_SUBSTR = { # {substr: callable, ...} 'app_directories': _make_jinja_app_loader, 'filesystem': _make_jinja_filesystem_loader, }