- 更新日志
- Version 1.1.1
- Version 1.1.0
- Version 1.0.4
- Version 1.0.3
- Version 1.0.2
- Version 1.0.1
- Version 1.0
- Version 0.12.4
- Version 0.12.3
- Version 0.12.2
- Version 0.12.1
- Version 0.12
- Version 0.11.1
- Version 0.11
- Version 0.10.1
- Version 0.10
- Version 0.9
- Version 0.8.1
- Version 0.8
- Version 0.7.2
- Version 0.7.1
- Version 0.7
更新日志
Version 1.1.1
Released 2019-07-08
- The
flask.json_availableflag was added back for compatibilitywith some extensions. It will raise a deprecation warning when used,and will be removed in version 2.0.0. #3288
Version 1.1.0
Released 2019-07-04
- Bump minimum Werkzeug version to >= 0.15.
- Drop support for Python 3.4.
-
Error handlers for
InternalServerErroror500will always bepassed an instance ofInternalServerError. If they are invokeddue to an unhandled exception, that original exception is nowavailable ase.original_exceptionrather than being passeddirectly to the handler. The same is true if the handler is for thebaseHTTPException. This makes error handler behavior moreconsistent. #3266 -
Flask.finalize_request()is called for all unhandledexceptions even if there is no500error handler. Flask.loggertakes the same name asFlask.name(the value passed asFlask(import_name). This reverts 1.0’s behavior of alwayslogging to"flask.app", in order to support multiple apps in thesame process. A warning will be shown if old configuration isdetected that needs to be moved. #2866flask.RequestContext.copy()includes the current sessionobject in the request context copy. This preventssessionpointing to an out-of-date object. #2935- Using built-in RequestContext, unprintable Unicode characters inHost header will result in a HTTP 400 response and not HTTP 500 aspreviously. #2994
send_file()supportsPathLikeobjects asdescribed in PEP 0519, to supportpathlibin Python 3.#3059send_file()supportsBytesIOpartial content.#2957open_resource()accepts the “rt” file mode. This still doesthe same thing as “r”. #3163- The
MethodView.methodsattribute set in a base class is usedby subclasses. #3138 Flask.jinja_optionsis adictinstead of anImmutableDictto allow easier configuration. Changes must stillbe made before creating the environment. #3190- Flask’s
JSONMixinfor the request and response wrappers wasmoved into Werkzeug. Use Werkzeug’s version with Flask-specificsupport. This bumps the Werkzeug dependency to >= 0.15.#3125 - The
flaskcommand entry point is simplified to take advantageof Werkzeug 0.15’s better reloader support. This bumps the Werkzeugdependency to >= 0.15. #3022 - Support
static_url_paththat ends with a forward slash.#3134 - Support empty
static_folderwithout requiring setting an emptystatic_url_pathas well. #3124 jsonify()supportsdataclasses.dataclassobjects.#3195- Allow customizing the
Flask.url_map_classused for routing.#3069 - The development server port can be set to 0, which tells the OS topick an available port. #2926
- The return value from
cli.load_dotenv()is more consistentwith the documentation. It will returnFalseif python-dotenv isnot installed, or if the given path isn’t a file. #2937 - Signaling support has a stub for the
connect_viamethod whenthe Blinker library is not installed. #3208 - Add an
—extra-filesoption to theflask runCLI command tospecify extra files that will trigger the reloader on change.#2897 - Allow returning a dictionary from a view function. Similar to howreturning a string will produce a
text/htmlresponse, returninga dict will calljsonifyto produce aapplication/jsonresponse. #3111 - Blueprints have a
cliClick group likeapp.cli. CLI commandsregistered with a blueprint will be available as a group under theflaskcommand. #1357. - When using the test client as a context manager (
with client:),all preserved request contexts are popped when the block exits,ensuring nested contexts are cleaned up correctly. #3157 - Show a better error message when the view return type is notsupported. #3214
flask.testing.make_test_environ_builder()has been deprecated infavour of a new classflask.testing.EnvironBuilder. #3232- The
flask runcommand no longer fails if Python is not builtwith SSL support. Using the—certoption will show anappropriate error message. #3211 - URL matching now occurs after the request context is pushed, ratherthan when it’s created. This allows custom URL converters to accessthe app and request contexts, such as to query a database for an id.#3088
Version 1.0.4
Released 2019-07-04
- The key information for
BadRequestKeyErroris no longer clearedoutside debug mode, so error handlers can still access it. Thisrequires upgrading to Werkzeug 0.15.5. #3249 send_fileurl quotes the “:” and “/” characters for morecompatible UTF-8 filename support in some browsers. #3074- Fixes for PEP451 import loaders and pytest 5.x. #3275
- Show message about dotenv on stderr instead of stdout. #3285
Version 1.0.3
Released 2019-05-17
send_file()encodes filenames as ASCII instead of Latin-1(ISO-8859-1). This fixes compatibility with Gunicorn, which isstricter about header encodings than PEP 3333. #2766- Allow custom CLIs using
FlaskGroupto set the debug flag withoutit always being overwritten based on environment variables.#2765 flask —versionoutputs Werkzeug’s version and simplifies thePython version. #2825send_file()handles anattachment_filenamethat is anative Python 2 string (bytes) with UTF-8 coded bytes. #2933- A catch-all error handler registered for
HTTPExceptionwill nothandleRoutingException, which is used internally duringrouting. This fixes the unexpected behavior that had been introducedin 1.0. #2986 - Passing the
jsonargument toapp.test_clientdoes notpush/pop an extra app context. #2900
Version 1.0.2
Released 2018-05-02
- Fix more backwards compatibility issues with merging slashes betweena blueprint prefix and route. #2748
- Fix error with
flask routescommand when there are no routes.#2751
Version 1.0.1
Released 2018-04-29
- Fix registering partials (with no
name) as view functions.#2730 - Don’t treat lists returned from view functions the same as tuples.Only tuples are interpreted as response data. #2736
- Extra slashes between a blueprint’s
url_prefixand a route URLare merged. This fixes some backwards compatibility issues with thechange in 1.0. #2731, #2742 - Only trap
BadRequestKeyErrorerrors in debug mode, not allBadRequesterrors. This allowsabort(400)to continueworking as expected. #2735 - The
FLASK_SKIP_DOTENVenvironment variable can be set to1to skip automatically loading dotenv files. #2722
Version 1.0
Released 2018-04-26
- Python 2.6 and 3.3 are no longer supported.
- Bump minimum dependency versions to the latest stable versions:Werkzeug >= 0.14, Jinja >= 2.10, itsdangerous >= 0.24, Click >= 5.1.#2586
- Skip
app.runwhen a Flask application is runfrom the command line. This avoids some behavior that was confusingto debug. - Change the default for
JSONIFY_PRETTYPRINT_REGULARtoFalse.jsonify()returns a compact format bydefault, and an indented format in debug mode. #2193 Flask.initaccepts thehost_matchingargument and sets it onurl_map. #1559Flask.initaccepts thestatic_hostargumentand passes it as thehostargument when defining the staticroute. #1559send_file()supports Unicode inattachment_filename.#2223- Pass
_schemeargument fromurl_for()tohandle_url_build_error(). #2017 add_url_rule()accepts theprovide_automatic_optionsargument to disable adding theOPTIONSmethod. #1489MethodViewsubclasses inherit method handlers frombase classes. #1936- Errors caused while opening the session at the beginning of therequest are handled by the app’s error handlers. #2254
- Blueprints gained
json_encoderandjson_decoderattributes to override the app’sencoder and decoder. #1898 Flask.make_response()raisesTypeErrorinstead ofValueErrorfor bad response types. The error messages have beenimproved to describe why the type is invalid. #2256- Add
routesCLI command to output routes registered on theapplication. #2259 - Show warning when session cookie domain is a bare hostname or an IPaddress, as these may not behave properly in some browsers, such asChrome. #2282
- Allow IP address as exact session cookie domain. #2282
SESSION_COOKIE_DOMAINis set if it is detected throughSERVER_NAME. #2282- Auto-detect zero-argument app factory called
create_appormake_appfromFLASK_APP. #2297 - Factory functions are not required to take a
script_infoparameter to work with theflaskcommand. If they take a singleparameter or a parameter namedscript_info, theScriptInfoobject will be passed. #2319 FLASK_APPcan be set to an app factory, with arguments ifneeded, for exampleFLASK_APP=myproject.app:create_app('dev').#2326FLASK_APPcan point to local packages that are not installed ineditable mode, althoughpip install -eis still preferred.#2414- The
Viewclass attributeprovide_automatic_optionsis set inas_view(), to be detected byadd_url_rule(). #2316 - Error handling will try handlers registered for
blueprint, code,app, code,blueprint, exception,app, exception.#2314 Cookieis added to the response’sVaryheader if the sessionis accessed at all during the request (and not deleted). #2288test_request_context()acceptssubdomainandurl_schemearguments for use when building the base URL.#1621- Set
APPLICATION_ROOTto'/'by default. This was alreadythe implicit default when it was set toNone. TRAP_BAD_REQUEST_ERRORSis enabled by default in debug mode.BadRequestKeyErrorhas a message with the bad key in debug modeinstead of the generic bad request message. #2348- Allow registering new tags with
TaggedJSONSerializerto support storing othertypes in the session cookie. #2352 - Only open the session if the request has not been pushed onto thecontext stack yet. This allows
stream_with_context()generators to access the same session that the containing view uses.#2354 - Add
jsonkeyword argument for the test client request methods.This will dump the given object as JSON and set the appropriatecontent type. #2358 - Extract JSON handling to a mixin applied to both the
RequestandResponseclasses. This adds theis_json()andget_json()methods tothe response to make testing JSON response much easier. #2358 - Removed error handler caching because it caused unexpected resultsfor some exception inheritance hierarchies. Register handlersexplicitly for each exception if you want to avoid traversing theMRO. #2362
- Fix incorrect JSON encoding of aware, non-UTC datetimes. #2374
- Template auto reloading will honor debug mode even even if
jinja_envwas already accessed. #2373 -
The following old deprecated code was removed. #2385
-
flask.ext- import extensions directly by their name insteadof through theflask.extnamespace. For example,import flask.ext.sqlalchemybecomesimport flask_sqlalchemy. Flask.init_jinja_globals- extendFlask.create_jinja_environment()instead.Flask.error_handlers- tracked byFlask.error_handler_spec, useFlask.errorhandler()to register handlers.Flask.request_globals_class- useFlask.app_ctx_globals_classinstead.Flask.static_path- useFlask.static_url_pathinstead.Request.module- useRequest.blueprintinstead.- The
Request.jsonproperty is no longer deprecated.#1421 - Support passing a
EnvironBuilderordicttotest_client.open. #2412 - The
flaskcommand andFlask.run()will load environmentvariables from.envand.flaskenvfiles if python-dotenv isinstalled. #2416 - When passing a full URL to the test client, the scheme in the URL isused instead of
PREFERRED_URL_SCHEME. #2430 Flask.loggerhas been simplified.LOGGER_NAMEandLOGGER_HANDLER_POLICYconfig was removed. The logger is alwaysnamedflask.app. The level is only set on first access, itdoesn’t checkFlask.debugeach time. Only one format isused, not different ones depending onFlask.debug. Nohandlers are removed, and a handler is only added if no handlers arealready configured. #2436- Blueprint view function names may not contain dots. #2450
- Fix a
ValueErrorcaused by invalidRangerequests in somecases. #2526 - The development server uses threads by default. #2529
- Loading config files with
silent=Truewill ignoreENOTDIRerrors. #2581 - Pass
—certand—keyoptions toflask runto run thedevelopment server over HTTPS. #2606 - Added
SESSION_COOKIE_SAMESITEto control theSameSiteattribute on the session cookie. #2607 - Added
test_cli_runner()to create a Click runnerthat can invoke Flask CLI commands for testing. #2636 - Subdomain matching is disabled by default and setting
SERVER_NAMEdoes not implicitly enable it. It can be enabledby passingsubdomain_matching=Trueto theFlaskconstructor.#2635 - A single trailing slash is stripped from the blueprint
url_prefixwhen it is registered with the app. #2629 Request.get_json()doesn’t cache the result if parsing failswhensilentis true. #2651Request.get_json()no longer accepts arbitrary encodings.Incoming JSON should be encoded using UTF-8 per RFC 8259, butFlask will autodetect UTF-8, -16, or -32. #2691- Added
MAX_COOKIE_SIZEandResponse.max_cookie_sizeto control when Werkzeug warns about large cookies that browsers mayignore. #2693 - Updated documentation theme to make docs look better in smallwindows. #2709
- Rewrote the tutorial docs and example project to take a morestructured approach to help new users avoid common pitfalls.#2676
Version 0.12.4
Released 2018-04-29
- Repackage 0.12.3 to fix package layout issue. #2728
Version 0.12.3
Released 2018-04-26
Request.get_json()no longer accepts arbitrary encodings.Incoming JSON should be encoded using UTF-8 per RFC 8259, butFlask will autodetect UTF-8, -16, or -32. #2692- Fix a Python warning about imports when using
python -m flask.#2666 - Fix a
ValueErrorcaused by invalidRangerequests in somecases.
Version 0.12.2
Released 2017-05-16
- Fix a bug in
safe_joinon Windows.
Version 0.12.1
Released 2017-03-31
- Prevent
flask runfrom showing aNoAppExceptionwhen anImportErroroccurs within the imported application module. - Fix encoding behavior of
app.config.from_pyfilefor Python 3.#2118 - Use the
SERVER_NAMEconfig if it is present as default valuesforapp.run. #2109, #2152 - Call
ctx.auto_popwith the exception object instead ofNone,in the event that aBaseExceptionsuch asKeyboardInterruptis raised in a request handler.
Version 0.12
Released 2016-12-21, codename Punsch
- The cli command now responds to
—version. - Mimetype guessing and ETag generation for file-like objects in
send_filehas been removed. #104, :pr1849 - Mimetype guessing in
send_filenow fails loudly and doesn’t fallback toapplication/octet-stream. #1988 - Make
flask.safe_joinable to join multiple paths likeos.path.join#1730 - Revert a behavior change that made the dev server crash instead ofreturning an Internal Server Error. #2006
- Correctly invoke response handlers for both regular requestdispatching as well as error handlers.
- Disable logger propagation by default for the app logger.
- Add support for range requests in
send_file. app.test_clientincludes preset default environment, which cannow be directly set, instead of perclient.get.- Fix crash when running under PyPy3. #1814
Version 0.11.1
Released 2016-06-07
- Fixed a bug that prevented
FLASKAPP=foobar/_init.pyfromworking. #1872
Version 0.11
Released 2016-05-29, codename Absinthe
- Added support to serializing top-level arrays to
flask.jsonify(). This introduces a security risk in ancientbrowsers. See JSON 安全 for details. - Added before_render_template signal.
- Added
**kwargstoflask.Test.test_client()to supportpassing additional keyword arguments to the constructor offlask.Flask.test_client_class. - Added
SESSION_REFRESH_EACH_REQUESTconfig key that controls theset-cookie behavior. If set toTruea permanent session will berefreshed each request and get their lifetime extended, if set toFalseit will only be modified if the session actually modifies.Non permanent sessions are not affected by this and will alwaysexpire if the browser window closes. - Made Flask support custom JSON mimetypes for incoming data.
- Added support for returning tuples in the form
(response,headers)from a view function. - Added
flask.Config.from_json(). - Added
flask.Flask.config_class. - Added
flask.Config.get_namespace(). - Templates are no longer automatically reloaded outside of debugmode. This can be configured with the new
TEMPLATES_AUTO_RELOADconfig key. - Added a workaround for a limitation in Python 3.3’s namespaceloader.
- Added support for explicit root paths when using Python 3.3’snamespace packages.
- Added flask and the
flask.climodule to start thelocal debug server through the click CLI system. This is recommendedover the oldflask.run()method as it works faster and morereliable due to a different design and also replacesFlask-Script. - Error handlers that match specific classes are now checked first,thereby allowing catching exceptions that are subclasses of HTTPexceptions (in
werkzeug.exceptions). This makes it possible foran extension author to create exceptions that will by default resultin the HTTP error of their choosing, but may be caught with a customerror handler if desired. - Added
flask.Config.from_mapping(). - Flask will now log by default even if debug is disabled. The logformat is now hardcoded but the default log handling can be disabledthrough the
LOGGER_HANDLER_POLICYconfiguration key. - Removed deprecated module functionality.
- Added the
EXPLAIN_TEMPLATE_LOADINGconfig flag which whenenabled will instruct Flask to explain how it locates templates.This should help users debug when the wrong templates are loaded. - Enforce blueprint handling in the order they were registered fortemplate loading.
- Ported test suite to py.test.
- Deprecated
request.jsonin favour ofrequest.get_json(). - Add “pretty” and “compressed” separators definitions in jsonify()method. Reduces JSON response size when
JSONIFY_PRETTYPRINT_REGULAR=Falseby removing unnecessary whitespace included by default after separators. - JSON responses are now terminated with a newline character, becauseit is a convention that UNIX text files end with a newline and someclients don’t deal well when this newline is missing. This came uporiginally as a part of<https://github.com/postmanlabs/httpbin/issues/168>. #1262
- The automatically provided
OPTIONSmethod is now correctlydisabled if the user registered an overriding rule with thelowercase-versionoptions. #1288 flask.json.jsonifynow supports thedatetime.datetype.#1326- Don’t leak exception info of already caught exceptions to contextteardown handlers. #1393
- Allow custom Jinja environment subclasses. #1422
- Updated extension dev guidelines.
flask.gnow haspop()andsetdefaultmethods.- Turn on autoescape for
flask.templating.render_template_stringby default. #1515 flask.extis now deprecated. #1484send_from_directorynow raises BadRequest if the filename isinvalid on the server OS. #1763- Added the
JSONIFY_MIMETYPEconfiguration variable. #1728 - Exceptions during teardown handling will no longer leave badapplication contexts lingering around.
- Fixed broken
test_appcontext_signals()test case. - Raise an
AttributeErrorinflask.helpers.find_package()with a useful message explaining why it is raised when a PEP 302import hook is used without anis_package()method. - Fixed an issue causing exceptions raised before entering a requestor app context to be passed to teardown handlers.
- Fixed an issue with query parameters getting removed from requestsin the test client when absolute URLs were requested.
- Made
@before_first_requestinto a decorator as intended. - Fixed an etags bug when sending a file streams with a name.
- Fixed
send_from_directorynot expanding to the application rootpath correctly. - Changed logic of before first request handlers to flip the flagafter invoking. This will allow some uses that are potentiallydangerous but should probably be permitted.
- Fixed Python 3 bug when a handler from
app.url_build_error_handlersreraises theBuildError.
Version 0.10.1
Released 2013-06-14
- Fixed an issue where
|tojsonwas not quoting single quotes whichmade the filter not work properly in HTML attributes. Now it’spossible to use that filter in single quoted attributes. This shouldmake using that filter with angular.js easier. - Added support for byte strings back to the session system. Thisbroke compatibility with the common case of people putting binarydata for token verification into the session.
- Fixed an issue where registering the same method twice for the sameendpoint would trigger an exception incorrectly.
Version 0.10
Released 2013-06-13, codename Limoncello
- Changed default cookie serialization format from pickle to JSON tolimit the impact an attacker can do if the secret key leaks. SeeVersion 0.10 for more information.
- Added
template_testmethods in addition to the already existingtemplate_filtermethod family. - Added
template_globalmethods in addition to the alreadyexistingtemplate_filtermethod family. - Set the content-length header for x-sendfile.
tojsonfilter now does not escape script blocks in HTML5parsers.tojsonused in templates is now safe by default due. This wasallowed due to the different escaping behavior.- Flask will now raise an error if you attempt to register a newfunction on an already used endpoint.
- Added wrapper module around simplejson and added defaultserialization of datetime objects. This allows much easiercustomization of how JSON is handled by Flask or any Flaskextension.
- Removed deprecated internal
flask.sessionmodule alias. Useflask.sessionsinstead to get the session module. This is not tobe confused withflask.sessionthe session proxy. - Templates can now be rendered without request context. The behavioris slightly different as the
request,sessionandgobjects will not be available and blueprint’s context processors arenot called. - The config object is now available to the template as a real globaland not through a context processor which makes it available even inimported templates by default.
- Added an option to generate non-ascii encoded JSON which shouldresult in less bytes being transmitted over the network. It’sdisabled by default to not cause confusion with existing librariesthat might expect
flask.json.dumpsto return bytestrings bydefault. flask.gis now stored on the app context instead of the requestcontext.flask.gnow gained aget()method for not erroring out onnon existing items.flask.gnow can be used with theinoperator to see what’sdefined and it now is iterable and will yield all attributes stored.flask.Flask.request_globals_classgot renamed toflask.Flask.app_ctx_globals_classwhich is a better name to whatit does since 0.10.request,sessionandgare now also added as proxies tothe template context which makes them available in importedtemplates. One has to be very careful with those though becauseusage outside of macros might cause caching.- Flask will no longer invoke the wrong error handlers if a proxyexception is passed through.
- Added a workaround for chrome’s cookies in localhost not working asintended with domain names.
- Changed logic for picking defaults for cookie values from sessionsto work better with Google Chrome.
- Added
message_flashedsignal that simplifies flashing testing. - Added support for copying of request contexts for better workingwith greenlets.
- Removed custom JSON HTTP exception subclasses. If you were relyingon them you can reintroduce them again yourself trivially. Usingthem however is strongly discouraged as the interface was flawed.
- Python requirements changed: requiring Python 2.6 or 2.7 now toprepare for Python 3.3 port.
- Changed how the teardown system is informed about exceptions. Thisis now more reliable in case something handles an exception halfwaythrough the error handling process.
- Request context preservation in debug mode now keeps the exceptioninformation around which means that teardown handlers are able todistinguish error from success cases.
- Added the
JSONIFY_PRETTYPRINT_REGULARconfiguration variable. - Flask now orders JSON keys by default to not trash HTTP caches dueto different hash seeds between different workers.
- Added
appcontext_pushedandappcontext_poppedsignals. - The builtin run method now takes the
SERVER_NAMEinto accountwhen picking the default port to run on. - Added
flask.request.get_json()as a replacement for the oldflask.request.jsonproperty.
Version 0.9
Released 2012-07-01, codename Campari
- The
flask.Request.on_json_loading_failed()now returns a JSONformatted response by default. - The
flask.url_for()function now can generate anchors to thegenerated links. - The
flask.url_for()function now can also explicitly generateURL rules specific to a given HTTP method. - Logger now only returns the debug log setting if it was not setexplicitly.
- Unregister a circular dependency between the WSGI environment andthe request object when shutting down the request. This means thatenviron
werkzeug.requestwill beNoneafter the response wasreturned to the WSGI server but has the advantage that the garbagecollector is not needed on CPython to tear down the request unlessthe user created circular dependencies themselves. - Session is now stored after callbacks so that if the session payloadis stored in the session you can still modify it in an after requestcallback.
- The
flask.Flaskclass will avoid importing the providedimport name if it can (the required first parameter), to benefittools which build Flask instances programmatically. The Flask classwill fall back to using import on systems with custom module hooks,e.g. Google App Engine, or when the import name is inside a ziparchive (usually a .egg) prior to Python 2.7. - Blueprints now have a decorator to add custom template filtersapplication wide,
flask.Blueprint.app_template_filter(). - The Flask and Blueprint classes now have a non-decorator method foradding custom template filters application wide,
flask.Flask.add_template_filter()andflask.Blueprint.add_app_template_filter(). - The
flask.get_flashed_messages()function now allows renderingflashed message categories in separate blocks, through acategory_filterargument. - The
flask.Flask.run()method now acceptsNoneforhostandportarguments, using default values whenNone. Thisallows for calling run using configuration values, e.g.app.run(app.config.get('MYHOST'), app.config.get('MYPORT')),with proper behavior whether or not a config file is provided. - The
flask.render_template()method now accepts a either aniterable of template names or a single template name. Previously, itonly accepted a single template name. On an iterable, the firsttemplate found is rendered. - Added
flask.Flask.app_context()which works very similar tothe request context but only provides access to the currentapplication. This also adds support for URL generation without anactive request context. - View functions can now return a tuple with the first instance beingan instance of
flask.Response. This allows for returningjsonify(error="error msg"), 400from a view function. FlaskandBlueprintnow provide aget_send_file_max_age()hook for subclasses tooverride behavior of serving static files from Flask when usingflask.Flask.send_static_file()(used for the default staticfile handler) andsend_file(). This hook isprovided a filename, which for example allows changing cachecontrols by file extension. The default max-age forsend_fileand static files can be configured through a newSEND_FILE_MAX_AGE_DEFAULTconfiguration variable, which is usedin the defaultget_send_file_max_ageimplementation.- Fixed an assumption in sessions implementation which could breakmessage flashing on sessions implementations which use externalstorage.
- Changed the behavior of tuple return values from functions. They areno longer arguments to the response object, they now have a definedmeaning.
- Added
flask.Flask.request_globals_classto allow a specificclass to be used on creation of theginstance ofeach request. - Added
required_methodsattribute to view functions to force-addmethods on registration. - Added
flask.after_this_request(). - Added
flask.stream_with_context()and the ability to pushcontexts multiple times without producing unexpected behavior.
Version 0.8.1
Released 2012-07-01
- Fixed an issue with the undocumented
flask.sessionmodule to notwork properly on Python 2.5. It should not be used but did causesome problems for package managers.
Version 0.8
Released 2011-09-29, codename Rakija
- Refactored session support into a session interface so that theimplementation of the sessions can be changed without having tooverride the Flask class.
- Empty session cookies are now deleted properly automatically.
- View functions can now opt out of getting the automatic OPTIONSimplementation.
- HTTP exceptions and Bad Request errors can now be trapped so thatthey show up normally in the traceback.
- Flask in debug mode is now detecting some common problems and triesto warn you about them.
- Flask in debug mode will now complain with an assertion error if aview was attached after the first request was handled. This givesearlier feedback when users forget to import view code ahead oftime.
- Added the ability to register callbacks that are only triggered onceat the beginning of the first request.(
Flask.before_first_request()) - Malformed JSON data will now trigger a bad request HTTP exceptioninstead of a value error which usually would result in a 500internal server error if not handled. This is a backwardsincompatible change.
- Applications now not only have a root path where the resources andmodules are located but also an instance path which is thedesignated place to drop files that are modified at runtime (uploadsetc.). Also this is conceptually only instance depending and outsideversion control so it’s the perfect place to put configuration filesetc. For more information see 实例文件夹.
- Added the
APPLICATION_ROOTconfiguration variable. - Implemented
session_transaction()toeasily modify sessions from the test environment. - Refactored test client internally. The
APPLICATION_ROOTconfiguration variable as well asSERVER_NAMEare now properlyused by the test client as defaults. - Added
flask.views.View.decoratorsto support simplerdecorating of pluggable (class-based) views. - Fixed an issue where the test client if used with the “with”statement did not trigger the execution of the teardown handlers.
- Added finer control over the session cookie parameters.
- HEAD requests to a method view now automatically dispatch to the
getmethod if no handler was implemented. - Implemented the virtual
flask.extpackage to importextensions from. - The context preservation on exceptions is now an integral componentof Flask itself and no longer of the test client. This cleaned upsome internal logic and lowers the odds of runaway request contextsin unittests.
- Fixed the Jinja2 environment’s
list_templatesmethod notreturning the correct names when blueprints or modules wereinvolved.
Version 0.7.2
Released 2011-07-06
- Fixed an issue with URL processors not properly working onblueprints.
Version 0.7.1
Released 2011-06-29
- Added missing future import that broke 2.5 compatibility.
- Fixed an infinite redirect issue with blueprints.
Version 0.7
Released 2011-06-28, codename Grappa
- Added
make_default_options_response()which canbe used by subclasses to alter the default behavior forOPTIONSresponses. - Unbound locals now raise a proper
RuntimeErrorinstead of anAttributeError. - Mimetype guessing and etag support based on file objects is nowdeprecated for
flask.send_file()because it was unreliable.Pass filenames instead or attach your own etags and provide a propermimetype by hand. - Static file handling for modules now requires the name of the staticfolder to be supplied explicitly. The previous autodetection was notreliable and caused issues on Google’s App Engine. Until 1.0 the oldbehavior will continue to work but issue dependency warnings.
- Fixed a problem for Flask to run on jython.
- Added a
PROPAGATE_EXCEPTIONSconfiguration variable that can beused to flip the setting of exception propagation which previouslywas linked toDEBUGalone and is now linked to eitherDEBUGor `TEST
(本文超出单文档体积上限,已截断)
