class BaseLoader:
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
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_source |
No summary |
Method | list_templates |
Iterates over all templates. If the loader does not support that it should raise a TypeError which is the default behavior. |
Method | load |
No summary |
Class Variable | has_source_access |
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 |
jinja2.loaders.ChoiceLoader
, jinja2.loaders.DictLoader
, jinja2.loaders.FileSystemLoader
, jinja2.loaders.PackageLoader
, jinja2.loaders.PrefixLoader
TypeError
which is the default behavior.Returns | |
t.List[ | Undocumented |
get_source
. Subclasses should not
override this method as loaders working on collections of other
loaders (such as PrefixLoader
or ChoiceLoader
)
will not call this method but get_source
directly.Parameters | |
environment:Environment | Undocumented |
name:str | Undocumented |
globals:t.Optional[ | Undocumented |
Returns | |
Template | Undocumented |