class PackageLoader(BaseLoader):
Load templates from a directory in a Python package.
The following example looks up templates in the pages directory within the project.ui package.
loader = PackageLoader("project.ui", "pages")
Only packages installed as directories (standard pip behavior) or zip/egg files (less common) are supported. The Python API for introspecting data in packages is too limited to support other installation methods the way this loader requires.
There is limited support for PEP 420 namespace packages. The template directory is assumed to only be in one namespace contributor. Zip files contributing to a namespace are not supported.
Parameters | |
package_name | Import name of the package that contains the template directory. |
package_path | Directory within the imported package that contains the templates. |
encoding | Encoding of template files. |
Method | __init__ |
Undocumented |
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. |
Instance Variable | _archive |
Undocumented |
Instance Variable | _loader |
Undocumented |
Instance Variable | _template_root |
Undocumented |
Instance Variable | encoding |
Undocumented |
Instance Variable | package_name |
Undocumented |
Instance Variable | package_path |
Undocumented |
Inherited from BaseLoader
:
Method | load |
No summary |
Class Variable | has_source_access |
Undocumented |
Undocumented
Parameters | |
package_name:str | Undocumented |
package_path:str | Undocumented |
encoding:str | Undocumented |
jinja2.loaders.BaseLoader.get_source
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.BaseLoader.list_templates
TypeError
which is the default behavior.Returns | |
t.List[ | Undocumented |