OpenQuizz
Une application de gestion des contenus pédagogiques
BaseLoader Class Reference
Inheritance diagram for BaseLoader:
Collaboration diagram for BaseLoader:

Public Member Functions

def get_source (self, environment, template)
 
def list_templates (self)
 
def load (self, environment, name, globals=None)
 

Static Public Attributes

 has_source_access
 

Detailed Description

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 file(path) as f:
                source = f.read().decode('utf-8')
            return source, path, lambda: mtime == getmtime(path)

Member Function Documentation

◆ get_source()

def get_source (   self,
  environment,
  template 
)
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 unicode string or a ASCII bytestring.  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.

Reimplemented in ChoiceLoader, PrefixLoader, FunctionLoader, DictLoader, PackageLoader, and FileSystemLoader.

◆ list_templates()

def list_templates (   self)
Iterates over all templates.  If the loader does not support that
it should raise a :exc:`TypeError` which is the default behavior.

Reimplemented in ChoiceLoader, PrefixLoader, DictLoader, PackageLoader, and FileSystemLoader.

◆ load()

def load (   self,
  environment,
  name,
  globals = None 
)
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.

Reimplemented in ModuleLoader, ChoiceLoader, and PrefixLoader.

Field Documentation

◆ has_source_access

has_source_access
static

The documentation for this class was generated from the following file: