class BaseLoader: (source)
Known subclasses: jinja2.loaders.ChoiceLoader
, jinja2.loaders.DictLoader
, jinja2.loaders.FileSystemLoader
, jinja2.loaders.FunctionLoader
, jinja2.loaders.ModuleLoader
, jinja2.loaders.PackageLoader
, jinja2.loaders.PrefixLoader
Baseclass for all loaders. Subclass this and override `get_source` to implement a custom loading mechanism. The environment provides a `get_template` method that calls the loader's `load` method to get the :class:`Template` object. A very basic example for a loader that looks up templates on the file system could look like this:: from jinja2 import BaseLoader, TemplateNotFound from os.path import join, exists, getmtime class MyLoader(BaseLoader): def __init__(self, path): self.path = path def get_source(self, environment, template): path = join(self.path, template) if not exists(path): raise TemplateNotFound(template) mtime = getmtime(path) with open(path) as f: source = f.read() return source, path, lambda: mtime == getmtime(path)
Method | get |
Get the template source, filename and reload helper for a template. It's passed the environment and template name and has to return a tuple in the form ``(source, filename, uptodate)`` or raise a `TemplateNotFound` error if it can't locate the template. |
Method | list |
Iterates over all templates. If the loader does not support that it should raise a :exc:`TypeError` which is the default behavior. |
Method | load |
Loads a template. This method looks up the template in the cache or loads one by calling :meth:`get_source`. Subclasses should not override this method as loaders working on collections of other loaders (such as :class:`PrefixLoader` or :class:`ChoiceLoader`) will not call this method but `get_source` directly. |
Class Variable | has |
Undocumented |
jinja2.loaders.ChoiceLoader
, jinja2.loaders.DictLoader
, jinja2.loaders.FileSystemLoader
, jinja2.loaders.FunctionLoader
, jinja2.loaders.PackageLoader
, jinja2.loaders.PrefixLoader
Get the template source, filename and reload helper for a template. It's passed the environment and template name and has to return a tuple in the form ``(source, filename, uptodate)`` or raise a `TemplateNotFound` error if it can't locate the template. The source part of the returned tuple must be the source of the template as a string. The filename should be the name of the file on the filesystem if it was loaded from there, otherwise ``None``. The filename is used by Python for the tracebacks if no loader extension is used. The last item in the tuple is the `uptodate` function. If auto reloading is enabled it's always called to check if the template changed. No arguments are passed so the function must store the old state somewhere (for example in a closure). If it returns `False` the template will be reloaded.
Parameters | |
environment:Environment | Undocumented |
template:str | Undocumented |
Returns | |
t.Tuple[ | Undocumented |
Loads a template. This method looks up the template in the cache or loads one by calling :meth:`get_source`. Subclasses should not override this method as loaders working on collections of other loaders (such as :class:`PrefixLoader` or :class:`ChoiceLoader`) will not call this method but `get_source` directly.
Parameters | |
environment:Environment | Undocumented |
name:str | Undocumented |
globals:t.Optional[ | Undocumented |
Returns | |
Template | Undocumented |