• Unbound locals now raise a properRuntimeError instead of anAttributeError.
• Mimetype guessing and etag support based on ﬁle objects is now deprecated for
flask.send_file() because it was unreliable. Pass ﬁlenames instead or attach
your own etags and provide a proper mimetype by hand.
• Static ﬁle handling for modules now requires the name of the static folder to
be supplied explicitly. The previous autodetection was not reliable and caused
issues on Google’s App Engine. Until 1.0 the old behavior will continue to work
but issue dependency warnings.
• ﬁxed a problem for Flask to run on jython.
• added a PROPAGATE_EXCEPTIONS conﬁguration variable that can be used to
ﬂip the setting of exceptionpropagationwhich previously was linked to DEBUG
alone and is now linked to either DEBUG or TESTING.
• Flask no longer internally dependsonrulesbeing addedthroughthe add_url_rule
function and can now also accept regular werkzeug rules added to the url map.
• Added an endpoint method to the ﬂask application object which allows one to
register a callback to an arbitrary endpoint with a decorator.
• Use Last-Modiﬁed for static ﬁle sending instead of Date which was incorrectly
introduced in 0.6.
• Added create_jinja_loader to override the loader creation process.
• Implemented a silent ﬂag for conﬁg.from_pyﬁle.
• Added teardown_request decorator, for functions that should run at the end of
arequest regardless of whether an exception occurred. Also the behavior for
after_request was changed. It’s now no longer executed when an exception is
raised. See Upgrading to new Teardown Handling
• Implemented flask.has_request_context()
• Deprecated init_jinja_globals. Overridethe create_jinja_environment() method
instead to achieve the same functionality.
• Added flask.safe_join()
• The automatic JSON request data unpacking now looks at the charset mimetype
• Don’t modify the session on flask.get_flashed_messages() if there are no mes-
sages in the session.
• before_request handlers are now able to abort requests with errors.
• it is not possible to deﬁne user exception handlers. That way you can provide
custom error messages froma central hub forcertain errors that might occur dur-
ing request processing (for instance database connection errors, timeouts from
remote resources etc.).
• Blueprints can provide blueprint speciﬁc error handlers.
• Implemented generic Pluggable Views (class-based views).
30.10 Version 0.6.1
Bugﬁx release, released on December 31st 2010
• Fixed an issue where the default OPTIONS response was not exposing all valid
methods in the Allow header.
• Jinja2 template loading syntax now allows ”./” in front of a template load path.
Previously this caused issues with module setups.
• Fixed an issue where the subdomain setting for modules was ignored for the
• Fixed a security problem that allowed clients to download arbitrary ﬁles if the
host server was a windows based operating system and the client uses back-
slashes to escape the directory the ﬁles where exposed from.
30.11 Version 0.6
Released on July 27th 2010, codename Whisky
• after request functions are now called in reverse order of registration.
• OPTIONS is now automatically implemented by Flask unless the application
explicitly adds ‘OPTIONS’ as method to the URL rule. In this case no automatic
OPTIONS handling kicks in.
• static rules are now even in place if there is no static folder for the module. This
was implemented to aid GAE which will remove the static folder if it’s part of a
mapping in the .yml ﬁle.
• the config is now available in the templates as conﬁg.
• context processors will no longer override values passed directly to the render
• added the ability to limit the incoming request data with the new
MAX_CONTENT_LENGTH conﬁguration value.
• the endpoint for the flask.Module.add_url_rule() method is now optional to
be consistent with the function of the same name on the application object.
• added a flask.make_response() function that simpliﬁes creating response object
instances in views.
• added signalling supportbased onblinker. This feature is currently optional and
supposed to be used by extensions and applications. If you want to use it, make
sure to haveblinkerinstalled.
• refactored the way URL adapters are created. This process is nowfully customiz-
able with the create_url_adapter() method.
• modules can now register for a subdomain instead of just an URL preﬁx. This
makes it possible to bind a whole module to a conﬁgurable subdomain.
30.12 Version 0.5.2
Bugﬁx Release, released on July 15th 2010
• ﬁxed another issue with loading templates from directories when modules were
30.13 Version 0.5.1
Bugﬁx Release, released on July 6th 2010
• ﬁxes an issue with template loading from directories when modules where used.
30.14 Version 0.5
Released on July 6th 2010, codename Calvados
• ﬁxed a bug with subdomains that was caused by the inability to specify the
server name. The server name can now be set with the SERVER_NAME conﬁg
key. This key is now also used to set the session cookie cross-subdomain wide.
• autoescaping is no longer active for all templates. Instead it is only active for
.html, .htm, .xml and .xhtml. Inside templates this behavior can be changed
with the autoescape tag.
• refactored Flask internally. It now consists of more than a single ﬁle.
• flask.send_file() now emits etags and has the ability to do conditional re-
• (temporarily) dropped support for zipped applications. This was a rarely used
feature and led to some confusing behavior.
• added support for per-package template and static-ﬁle directories.
• removed support for create_jinja_loader which is no longer used in 0.5 due to the
improved module support.
• added a helper function to expose ﬁles from any directory.
30.15 Version 0.4
Released on June 18th 2010, codename Rakia
• added the ability to register application wide error handlers from modules.
• after_request() handlers are now also invoked if the request dies with an ex-
ception and an error handling page kicks in.
• test client has not the ability to preserve the request context for a little longer.
This can also be used to trigger custom requests that do not pop the request
stack for testing.
• because the Python standard library caches loggers, the name of the logger is
conﬁgurable now to better support unittests.
• added TESTING switch that can activate unittesting helpers.
• the logger switches to DEBUG mode now if debug is enabled.
30.16 Version 0.3.1
Bugﬁx release, released on May 28th 2010
• ﬁxed a error reporting bug with flask.Config.from_envvar()
• removed some unused code from ﬂask
• release does no longer include development leftover ﬁles (.git folder for themes,
built documentation in zip and pdf ﬁle and some .pyc ﬁles)
30.17 Version 0.3
Released on May 28th 2010, codename Schnaps
• added support for categories for ﬂashed messages.
• the application now conﬁgures a logging.Handler and will log request handling
exceptions to that logger when not in debug mode. This makes it possible to
receive mails on server errors for example.
• added supportforcontext binding that does not require the use of the with state-
ment for playing in the console.
• the request contextis now available withinthe with statement making itpossible
to further push the request context or pop it.
• added support for conﬁgurations.
30.18 Version 0.2
Released on May 12th 2010, codename Jägermeister
• various bugﬁxes
• integrated JSON support
• added get_template_attribute() helper function.
• add_url_rule() can now also register a view function.
• refactored internal request dispatching.
• server listens on 127.0.0.1 by default now to ﬁx issues with chrome.
• added external URL support.
• added support for send_file()
• module support and internal request handling refactoring to better support
• sessions can be set to be permanent now on a per-session basis.
• better error reporting on missing secret keys.
• added support for Google Appengine.
30.19 Version 0.1
First public preview release.
Flask is licensed under a three clause BSD License. It basically means: do whatever
you want with it as long as the copyright in Flask sticks around, the conditions are not
modiﬁed and the disclaimer is present. Furthermore you must not use the names of
the authors to promote derivatives of the software without written consent.
The full license text can be found below (Flask License). For the documentation and
artwork different licenses apply.
Flask is written and maintained by Armin Ronacher and various contributors:
31.1.1 Development Lead
• Armin Ronacher <firstname.lastname@example.org >
31.1.2 Patches and Suggestions
• Adam Zapletal
• Ali Afshar
• Chris Edgemon
• Chris Grindstaff
• Christopher Grebs
• Daniel Neuhäuser
• Florent Xicluna
• Georg Brandl
• Justin Quick
• Kenneth Reitz
• Marian Sigler
• Matt Campell
• Matthew Frazier
• Michael van Tellingen
• Ron DuPlain
• Sebastien Estienne
• Simon Sapin
• Stephane Wirtel
• Thomas Schranz
• Zhao Xiaohong
• Edmond Burnett
31.2 General License Deﬁnitions
The following section contains the full license texts for Flask and the documentation.
• “AUTHORS” hereby refers to all the authors listed in the Authors section.
• The “Flask License” applies to all the sourcecode shipped as part of Flask (Flask
itself as well as the examples and the unittests) as well as documentation.
• The “Flask Artwork License” applies to the project’s Horn-Logo.
31.3 Flask License
Copyright (c) 2013 by Armin Ronacher and contributors. See AUTHORS for more
Some rights reserved.
Redistribution and use in source and binary forms of the software as well as docu-
mentation, with or without modiﬁcation, are permitted provided that the following
conditions are met:
• Redistributions of source code must retain the above copyright notice, this list of
conditions and the following disclaimer.
• Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
• The names of the contributors may not be used to endorse or promote products
derived from this software without speciﬁc prior written permission.
Documents you may be interested
Documents you may be interested