|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- from django.template import Template, TemplateDoesNotExist
-
-
- class Loader:
- def __init__(self, engine):
- self.engine = engine
-
- def get_template(self, template_name, skip=None):
- """
- Call self.get_template_sources() and return a Template object for
- the first template matching template_name. If skip is provided, ignore
- template origins in skip. This is used to avoid recursion during
- template extending.
- """
- tried = []
-
- for origin in self.get_template_sources(template_name):
- if skip is not None and origin in skip:
- tried.append((origin, "Skipped to avoid recursion"))
- continue
-
- try:
- contents = self.get_contents(origin)
- except TemplateDoesNotExist:
- tried.append((origin, "Source does not exist"))
- continue
- else:
- return Template(
- contents,
- origin,
- origin.template_name,
- self.engine,
- )
-
- raise TemplateDoesNotExist(template_name, tried=tried)
-
- def get_template_sources(self, template_name):
- """
- An iterator that yields possible matching template paths for a
- template name.
- """
- raise NotImplementedError(
- "subclasses of Loader must provide a get_template_sources() method"
- )
-
- def reset(self):
- """
- Reset any state maintained by the loader instance (e.g. cached
- templates or cached loader modules).
- """
- pass
|