class Extension:
Known subclasses: jinja2.ext.AutoEscapeExtension
, jinja2.ext.DebugExtension
, jinja2.ext.ExprStmtExtension
, jinja2.ext.InternationalizationExtension
, jinja2.ext.LoopControlExtension
, jinja2.ext.WithExtension
Extensions can be used to add extra functionality to the Jinja template
system at the parser level. Custom extensions are bound to an environment
but may not store environment specific data on self
. The reason for
this is that an extension can be bound to another environment (for
overlays) by creating a copy and reassigning the environment
attribute.
As extensions are created by the environment they cannot accept any arguments for configuration. One may want to work around that by using a factory function, but that is not possible as extensions are identified by their import name. The correct way to configure the extension is storing the configuration values on the environment. Because this way the environment ends up acting as central configuration storage the attributes may clash which is why extensions have to ensure that the names they choose for configuration are not too generic. prefix for example is a terrible name, fragment_cache_prefix on the other hand is a good name as includes the name of the extension (fragment cache).
Method | attr |
Return an attribute node for the current extension. This is useful to pass constants on extensions to generated template code. |
Method | call_method |
Call a method of the extension. This is a shortcut for attr + jinja2.nodes.Call . |
Method | filter_stream |
No summary |
Method | parse |
No summary |
Method | preprocess |
This method is called before the actual lexing and can be used to preprocess the source. The filename is optional. The return value must be the preprocessed source. |
Class Variable | identifier |
Undocumented |
Class Variable | tags |
Undocumented |
Method | __init__ |
Undocumented |
Method | __init_subclass__ |
Undocumented |
Method | bind |
Create a copy of this extension bound to another environment. |
Class Variable | priority |
Undocumented |
Instance Variable | environment |
Undocumented |
Return an attribute node for the current extension. This is useful to pass constants on extensions to generated template code.
self.attr('_my_attribute', lineno=lineno)
Parameters | |
name:str | Undocumented |
lineno:t.Optional[ | Undocumented |
Returns | |
nodes.ExtensionAttribute | Undocumented |
attr
+ jinja2.nodes.Call
.Parameters | |
name:str | Undocumented |
args:t.Optional[ | Undocumented |
kwargs:t.Optional[ | Undocumented |
dyn_args:t.Optional[ | Undocumented |
dyn_kwargs:t.Optional[ | Undocumented |
lineno:t.Optional[ | Undocumented |
Returns | |
nodes.Call | Undocumented |
~jinja2.lexer.TokenStream
that can be used
to filter tokens returned. This method has to return an iterable of
~jinja2.lexer.Token
s, but it doesn't have to return a
~jinja2.lexer.TokenStream
.Parameters | |
stream:TokenStream | Undocumented |
Returns | |
t.Union[ | Undocumented |
jinja2.ext.DebugExtension
, jinja2.ext.ExprStmtExtension
, jinja2.ext.InternationalizationExtension
, jinja2.ext.LoopControlExtension
tags
matched this method is called with the
parser as first argument. The token the parser stream is pointing at
is the name token that matched. This method has to return one or a
list of multiple nodes.Parameters | |
parser:Parser | Undocumented |
Returns | |
t.Union[ | Undocumented |
filename
is optional. The return value
must be the preprocessed source.Parameters | |
source:str | Undocumented |
name:t.Optional[ | Undocumented |
filename:t.Optional[ | Undocumented |
Returns | |
str | Undocumented |
t.Set[ str]
=
jinja2.ext.DebugExtension
, jinja2.ext.ExprStmtExtension
, jinja2.ext.InternationalizationExtension
, jinja2.ext.LoopControlExtension
Undocumented
jinja2.ext.AutoEscapeExtension
, jinja2.ext.InternationalizationExtension
, jinja2.ext.WithExtension
Undocumented
Parameters | |
environment:Environment | Undocumented |
Parameters | |
environment:Environment | Undocumented |
Returns | |
Extension | Undocumented |