from django.template.loader import get_template from django.utils.functional import cached_property class TemplatesCache: def __init__(self): self._cached_templates = {} def get_cached_template(self, template): # we check if template quacks like a Template, as generic Template and engine-specific Template # does not share a common ancestor if hasattr(template, 'render'): return template if template not in self._cached_templates: # this always return an engine-specific template object self._cached_templates[template] = get_template(template) return self._cached_templates[template] @cached_property def drag_item_template(self): return get_template('cms/toolbar/dragitem.html') @cached_property def placeholder_plugin_menu_template(self): return get_template('cms/toolbar/dragitem_menu.html') @cached_property def dragbar_template(self): return get_template('cms/toolbar/dragbar.html')