codecamp

Flask Version 0.6.1 to Version 0.7.3

Version 0.6.1

Bugfix 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 static folder.
  • Fixed a security problem that allowed clients to download arbitrary files if the host server was a windows based operating system and the client uses backslashes to escape the directory the files where exposed from.

Version 0.7

Released on June 28th 2011, codename Grappa

  • Added make_default_options_response() which can be used by subclasses to alter the default behavior for OPTIONS responses.
  • Unbound locals now raise a proper RuntimeError instead of an AttributeError.
  • Mimetype guessing and etag support based on file objects is now deprecated for flask.send_file() because it was unreliable. Pass filenames instead or attach your own etags and provide a proper mimetype by hand.
  • Static file 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.
  • fixed a problem for Flask to run on jython.
  • added a PROPAGATE_EXCEPTIONS configuration variable that can be used to flip the setting of exception propagation which previously was linked to DEBUG alone and is now linked to either DEBUG or TESTING.
  • Flask no longer internally depends on rules being added through the add_url_rule function and can now also accept regular werkzeug rules added to the url map.
  • Added an endpoint method to the flask application object which allows one to register a callback to an arbitrary endpoint with a decorator.
  • Use Last-Modified for static file sending instead of Date which was incorrectly introduced in 0.6.
  • Added create_jinja_loader to override the loader creation process.
  • Implemented a silent flag for config.from_pyfile.
  • Added teardown_request decorator, for functions that should run at the end of a request 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. Override the 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 parameter.
  • Don’t modify the session on flask.get_flashed_messages() if there are no messages in the session.
  • before_request handlers are now able to abort requests with errors.
  • it is not possible to define user exception handlers. That way you can provide custom error messages from a central hub for certain errors that might occur during request processing (for instance database connection errors, timeouts from remote resources etc.).
  • Blueprints can provide blueprint specific error handlers.
  • Implemented generic 即插视图 (class-based views).

Version 0.7.1

Bugfix release, released on June 29th 2011

  • Added missing future import that broke 2.5 compatibility.
  • Fixed an infinite redirect issue with blueprints.

Version 0.7.2

Bugfix release, released on July 6th 2011

  • Fixed an issue with URL processors not properly working on blueprints.

Version 0.7.3

Bugfix release, release date to be decided

  • Fixed the Jinja2 environment’s list_templates method not returning the correct names when blueprints or modules were involved.


Flask Version 0.1 to Version 0.6
Flask Version 0.8 to Version 0.9
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Flask 调试应用错误

Flask Python 3 支持

Flask 术语表

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }