forked from orbit-oss/flask
Allow custom jinja environments
This is useful e.g. when using the new Jinja Environment attributes added in mitsuhiko/jinja2#404
This commit is contained in:
parent
dac45f6c5d
commit
08ac3aa4e3
2 changed files with 16 additions and 1 deletions
|
|
@ -157,6 +157,11 @@ class Flask(_PackageBoundObject):
|
||||||
#: :class:`~flask.Response` for more information.
|
#: :class:`~flask.Response` for more information.
|
||||||
response_class = Response
|
response_class = Response
|
||||||
|
|
||||||
|
#: The class that is used for the Jinja environment.
|
||||||
|
#:
|
||||||
|
#: .. versionadded:: 0.11
|
||||||
|
jinja_env_class = Environment
|
||||||
|
|
||||||
#: The class that is used for the :data:`~flask.g` instance.
|
#: The class that is used for the :data:`~flask.g` instance.
|
||||||
#:
|
#:
|
||||||
#: Example use cases for a custom class:
|
#: Example use cases for a custom class:
|
||||||
|
|
@ -680,7 +685,7 @@ class Flask(_PackageBoundObject):
|
||||||
options['auto_reload'] = self.config['TEMPLATES_AUTO_RELOAD']
|
options['auto_reload'] = self.config['TEMPLATES_AUTO_RELOAD']
|
||||||
else:
|
else:
|
||||||
options['auto_reload'] = self.debug
|
options['auto_reload'] = self.debug
|
||||||
rv = Environment(self, **options)
|
rv = self.jinja_env_class(self, **options)
|
||||||
rv.globals.update(
|
rv.globals.update(
|
||||||
url_for=url_for,
|
url_for=url_for,
|
||||||
get_flashed_messages=get_flashed_messages,
|
get_flashed_messages=get_flashed_messages,
|
||||||
|
|
|
||||||
|
|
@ -361,3 +361,13 @@ def test_template_loader_debugging(test_apps):
|
||||||
app.config['EXPLAIN_TEMPLATE_LOADING'] = old_load_setting
|
app.config['EXPLAIN_TEMPLATE_LOADING'] = old_load_setting
|
||||||
|
|
||||||
assert len(called) == 1
|
assert len(called) == 1
|
||||||
|
|
||||||
|
def test_custom_jinja_env():
|
||||||
|
class CustomEnvironment(flask.templating.Environment):
|
||||||
|
pass
|
||||||
|
|
||||||
|
class CustomFlask(flask.Flask):
|
||||||
|
jinja_env_class = CustomEnvironment
|
||||||
|
|
||||||
|
app = CustomFlask(__name__)
|
||||||
|
assert isinstance(app.jinja_env, CustomEnvironment)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue