Enable template auto-reloading in app.run()

When Flask app debugging is enabled (app.debug==True), and Jinja2
template auto-reloading is not explicitly disbaled, template
auto-reloading should be enabled.

If the app is instantiated, the jinja_env object is accessed (thereby
initialising the Jinja2 environment) and the server is then started with
app.run(debug=True), template auto-reloading is *not* enabled.

This is because reading the jinja_env object causes the environment
initialisation function to set auto_reload to app.debug (which isn't yet
True). Calling app.run(debug=True) should correct this in order to
remain consistent with Flask code reloading (which is enabled within
app.run() if debug == True).
This commit is contained in:
Dave Barker 2016-06-14 00:59:32 +01:00
parent 433c561494
commit 0514ba2de1

View file

@ -839,6 +839,8 @@ class Flask(_PackageBoundObject):
options.setdefault('use_reloader', self.debug)
options.setdefault('use_debugger', self.debug)
options.setdefault('passthrough_errors', True)
if debug:
self.jinja_env.auto_reload = True
try:
run_simple(host, port, self, **options)
finally: