diff --git a/CHANGES b/CHANGES index 5df663ea..f028df2c 100644 --- a/CHANGES +++ b/CHANGES @@ -23,9 +23,9 @@ Version 1.0 - Added :meth:`flask.Config.from_json`. - Added :attr:`flask.Flask.config_class`. - Added :meth:`flask.config.Config.get_namespace`. -- Added ``TEMPLATES_AUTO_RELOAD`` config key. If disabled the - templates will be reloaded only if the application is running in - debug mode. For higher performance it’s possible to disable that. +- Added ``TEMPLATES_AUTO_RELOAD`` config key. Now by default templates will be + reloaded every time a template is requested only if the application is + running in debug mode. - Added a workaround for a limitation in Python 3.3's namespace loader. - Added support for explicit root paths when using Python 3.3's namespace packages. diff --git a/docs/config.rst b/docs/config.rst index 5f2b275e..d20f9a33 100644 --- a/docs/config.rst +++ b/docs/config.rst @@ -182,12 +182,12 @@ The following configuration values are used internally by Flask: if they are not requested by an XMLHttpRequest object (controlled by the ``X-Requested-With`` header) -``TEMPLATES_AUTO_RELOAD`` Flask checks if template was modified each - time it is requested and reloads it if - necessary. But disk I/O is costly and it may - be viable to disable this feature by setting - this key to ``False``. This option does not - affect debug mode. +``TEMPLATES_AUTO_RELOAD`` If this is set to `True` every time a template + is requested Flask checks if the template was + modified and if yes, it will reload the + template. By default the value is ``None`` + which means that Flask checks template + sources only in debug mode. ``EXPLAIN_TEMPLATE_LOADING`` If this is enabled then every attempt to load a template will write an info message to the logger explaining the diff --git a/flask/app.py b/flask/app.py index 4e97605e..9efa53d7 100644 --- a/flask/app.py +++ b/flask/app.py @@ -297,7 +297,7 @@ class Flask(_PackageBoundObject): 'JSON_AS_ASCII': True, 'JSON_SORT_KEYS': True, 'JSONIFY_PRETTYPRINT_REGULAR': True, - 'TEMPLATES_AUTO_RELOAD': True, + 'TEMPLATES_AUTO_RELOAD': None, }) #: The rule object to use for URL rules created. This is used by @@ -673,8 +673,10 @@ class Flask(_PackageBoundObject): if 'autoescape' not in options: options['autoescape'] = self.select_jinja_autoescape if 'auto_reload' not in options: - options['auto_reload'] = self.debug \ - or self.config['TEMPLATES_AUTO_RELOAD'] + if self.config['TEMPLATES_AUTO_RELOAD'] is not None: + options['auto_reload'] = self.config['TEMPLATES_AUTO_RELOAD'] + else: + options['auto_reload'] = self.debug rv = Environment(self, **options) rv.globals.update( url_for=url_for, diff --git a/tests/test_templating.py b/tests/test_templating.py index 5aaf9081..862b9b1f 100644 --- a/tests/test_templating.py +++ b/tests/test_templating.py @@ -296,12 +296,36 @@ def test_iterable_loader(): assert rv.data == b'