変更ログ
バージョン1.0.4
2019年7月4日リリース
BadRequestKeyError
のキー情報は、デバッグモード以外ではクリアされなくなったため、エラーハンドラーは引き続きアクセスできます。 これには、Werkzeug0.15.5にアップグレードする必要があります。 :issue: `3249`send_file
urlは、一部のブラウザーでより互換性のあるUTF-8ファイル名をサポートするために、「:」および「/」文字を引用符で囲んでいます。 :issue: `3074`- PEP451インポートローダーとpytest5.xの修正。 :issue: `3275`
- stdoutではなくstderrにdotenvに関するメッセージを表示します。 :issue: `3285`
バージョン1.0.3
2019年5月17日リリース
send_file()
は、ファイル名をLatin-1(ISO-8859-1)ではなくASCIIとしてエンコードします。 これにより、PEP3333よりもヘッダーエンコーディングが厳しいGunicornとの互換性が修正されます。 :issue: `2766`FlaskGroup
を使用するカスタムCLIが、環境変数に基づいて常に上書きされることなく、デバッグフラグを設定できるようにします。 :pr: `2765`flask --version
は、Werkzeugのバージョンを出力し、Pythonバージョンを簡略化します。 :pr: `2825`send_file()
は、UTF-8でコード化されたバイトを持つネイティブPython 2文字列(バイト)であるattachment_filename
を処理します。 :issue: `2933`HTTPException
に登録されているキャッチオールエラーハンドラーは、ルーティング中に内部的に使用されるRoutingExcpetion
を処理しません。 これにより、1.0で導入された予期しない動作が修正されます。 :pr: `2986`json
引数をapp.test_client
に渡しても、余分なアプリコンテキストがプッシュ/ポップされることはありません。 :issue: `2900`
バージョン1.0.2
2018年5月2日リリース
- ブループリントプレフィックスとルートの間のスラッシュのマージに関する下位互換性の問題を修正しました。 :pr: `2748`
- ルートがない場合の
flask routes
コマンドのエラーを修正しました。 :issue: `2751`
バージョン1.0.1
2018年4月29日リリース
- パーシャル(
__name__
なし)をビュー関数として登録する問題を修正しました。 :pr: `2730` - ビュー関数から返されたリストをタプルと同じように扱わないでください。 タプルのみが応答データとして解釈されます。 :issue: `2736`
- ブループリントの
url_prefix
とルートURLの間の余分なスラッシュがマージされます。 これにより、1.0での変更に伴う下位互換性の問題が修正されます。 :issue: `2731` 、:issue:` 2742` - すべての
BadRequest
エラーではなく、デバッグモードでBadRequestKeyError
エラーのみをトラップします。 これにより、abort(400)
は期待どおりに機能し続けることができます。 :issue: `2735` FLASK_SKIP_DOTENV
環境変数を1
に設定すると、dotenvファイルの自動ロードをスキップできます。 :issue: `2722`
バージョン1.0
2018年4月26日リリース
- Python2.6および3.3はサポートされなくなりました。
- 最小依存関係バージョンを最新の安定バージョンにバンプします:Werkzeug> = 0.14、Jinja> = 2.10、その危険> = 0.24、クリック> = 5.1。 :issue: `2586`
- コマンドラインからFlaskアプリケーションを実行する場合は、
app.run
をスキップしてください。 これにより、デバッグを混乱させるような動作を回避できます。 - JSONIFY_PRETTYPRINT_REGULAR のデフォルトを
False
に変更します。jsonify()
は、デフォルトでコンパクト形式を返し、デバッグモードではインデントされた形式を返します。 :pr: `2193` Flask.__init__
は、host_matching
引数を受け入れ、url_map
に設定します。 :issue: `1559`Flask.__init__
は、static_host
引数を受け入れ、静的ルートを定義するときにhost
引数として渡します。 :issue: `1559`send_file()
は、attachment_filename
でUnicodeをサポートしています。 :pr: `2223`_scheme
引数をurl_for()
からhandle_url_build_error()
に渡します。 :pr: `2017`add_url_rule()
は、provide_automatic_options
引数を受け入れて、OPTIONS
メソッドの追加を無効にします。 :pr: `1489`MethodView
サブクラスは、基本クラスからメソッドハンドラーを継承します。 :pr: `1936`- リクエストの開始時にセッションを開いているときに発生したエラーは、アプリのエラーハンドラーによって処理されます。 :pr: `2254`
- ブループリントは、アプリのエンコーダーとデコーダーをオーバーライドするために
json_encoder
およびjson_decoder
属性を取得しました。 :pr: `1898` Flask.make_response()
は、応答タイプが悪い場合、ValueError
ではなくTypeError
を発生させます。 タイプが無効である理由を説明するために、エラーメッセージが改善されました。 :pr: `2256`routes
CLIコマンドを追加して、アプリケーションに登録されているルートを出力します。 :pr: `2259`- セッションCookieドメインがベアホスト名またはIPアドレスの場合、Chromeなどの一部のブラウザでは正しく動作しない可能性があるため、警告を表示します。 :pr: `2282`
- 正確なセッションCookieドメインとしてIPアドレスを許可します。 :pr: `2282`
SESSION_COOKIE_DOMAIN
は、SERVER_NAME
で検出された場合に設定されます。 :pr: `2282`FLASK_APP
からcreate_app
またはmake_app
と呼ばれる引数なしのアプリファクトリを自動検出します。 :pr: `2297`flask
コマンドを使用するために、ファクトリ関数はscript_info
パラメーターを受け取る必要はありません。 単一のパラメーターまたはscript_info
という名前のパラメーターを受け取る場合、ScriptInfo
オブジェクトが渡されます。 :pr: `2319`FLASK_APP
は、FLASK_APP=myproject.app:create_app('dev')
のように、必要に応じて引数を使用してアプリファクトリに設定できます。 :pr: `2326`FLASK_APP
は、編集可能モードでインストールされていないローカルパッケージを指すことができますが、pip install -e
が引き続き推奨されます。 :pr: `2414`View
クラス属性provide_automatic_options
はas_view()
に設定され、add_url_rule()
によって検出されます。 :pr: `2316`- エラー処理は、
blueprint, code
、app, code
、blueprint, exception
、app, exception
に登録されているハンドラーを試行します。 :pr: `2314` Cookie
は、要求中にセッションがまったくアクセスされなかった場合(および削除されなかった場合)、応答のVary
ヘッダーに追加されます。 :pr: `2288`test_request_context()
は、ベースURLを構築するときに使用するsubdomain
およびurl_scheme
引数を受け入れます。 :pr: `1621`- デフォルトでは、 APPLICATION_ROOT を
'/'
に設定します。None
に設定されたとき、これはすでに暗黙のデフォルトでした。 - TRAP_BAD_REQUEST_ERRORS は、デバッグモードでデフォルトで有効になっています。
BadRequestKeyError
には、一般的な不正な要求メッセージの代わりに、デバッグモードで不正なキーを含むメッセージがあります。 :pr: `2348` TaggedJSONSerializer
に新しいタグを登録して、セッションCookieへの他のタイプの保存をサポートできるようにします。 :pr: `2352`- リクエストがまだコンテキストスタックにプッシュされていない場合にのみ、セッションを開きます。 これにより、
stream_with_context()
ジェネレーターは、含まれているビューが使用するのと同じセッションにアクセスできます。 :pr: `2354` - テストクライアントのリクエストメソッドに
json
キーワード引数を追加します。 これにより、指定されたオブジェクトがJSONとしてダンプされ、適切なコンテンツタイプが設定されます。 :pr: `2358` Request
クラスとResponse
クラスの両方に適用されるミックスインにJSON処理を抽出します。 これにより、is_json()
メソッドとget_json()
メソッドが応答に追加され、JSON応答のテストがはるかに簡単になります。 :pr: `2358`- 一部の例外継承階層で予期しない結果が発生したため、エラーハンドラのキャッシュを削除しました。 MROのトラバースを回避したい場合は、例外ごとにハンドラーを明示的に登録してください。 :pr: `2362`
- 認識している非UTC日時の誤ったJSONエンコーディングを修正しました。 :pr: `2374`
- テンプレートの自動再読み込みは、
jinja_env
がすでにアクセスされている場合でも、デバッグモードを尊重します。 :pr: `2373` - 次の古い非推奨コードは削除されました。 :issue: `2385`
flask.ext
-flask.ext
名前空間を介さずに、名前で直接拡張機能をインポートします。 たとえば、import flask.ext.sqlalchemy
はimport flask_sqlalchemy
になります。Flask.init_jinja_globals
-代わりにFlask.create_jinja_environment()
を拡張します。Flask.error_handlers
-Flask.error_handler_spec
によって追跡され、Flask.errorhandler()
を使用してハンドラーを登録します。Flask.request_globals_class
-代わりにFlask.app_ctx_globals_class
を使用してください。Flask.static_path
-代わりにFlask.static_url_path
を使用してください。Request.module
-代わりにRequest.blueprint
を使用してください。
Request.json
プロパティは非推奨ではなくなりました。 :issue: `1421`EnvironBuilder
またはdict
のtest_client.open
への受け渡しをサポートします。 :pr: `2412`flask
コマンドとFlask.run()
は、python-dotenvがインストールされている場合、.env
ファイルと.flaskenv
ファイルから環境変数をロードします。 :pr: `2416`- 完全なURLをテストクライアントに渡す場合、 PREFERRED_URL_SCHEME の代わりにURLのスキームが使用されます。 :pr: `2430`
Flask.logger
が簡略化されました。LOGGER_NAME
およびLOGGER_HANDLER_POLICY
構成が削除されました。 ロガーは常にflask.app
という名前です。 レベルは初回アクセス時にのみ設定され、毎回Flask.debug
をチェックしません。Flask.debug
によって異なる形式ではなく、1つの形式のみが使用されます。 ハンドラーは削除されず、ハンドラーがまだ構成されていない場合にのみハンドラーが追加されます。 :pr: `2436`- ブループリントビュー関数名にドットを含めることはできません。 :pr: `2450`
- 場合によっては、無効な
Range
リクエストによって引き起こされるValueError
を修正します。 :issue: `2526` - 開発サーバーはデフォルトでスレッドを使用します。 :pr: `2529`
silent=True
で構成ファイルをロードすると、ENOTDIR
エラーは無視されます。 :pr: `2581`--cert
および--key
オプションをflask run
に渡して、HTTPS経由で開発サーバーを実行します。 :pr: `2606`- セッションCookieの
SameSite
属性を制御するために、 SESSION_COOKIE_SAMESITE を追加しました。 :pr: `2607` test_cli_runner()
を追加して、テスト用にFlaskCLIコマンドを呼び出すことができるクリックランナーを作成しました。 :pr: `2636`- サブドメインマッチングはデフォルトで無効になっており、 SERVER_NAME を設定しても暗黙的に有効になるわけではありません。
subdomain_matching=True
をFlask
コンストラクターに渡すことで有効にできます。 :pr: `2635` - アプリに登録すると、ブループリント
url_prefix
から1つの末尾のスラッシュが削除されます。 :pr: `2629` silent
がtrueのときに解析が失敗した場合、Request.get_json()
は結果をキャッシュしません。 :issue: `2651`Request.get_json()
は任意のエンコーディングを受け入れなくなりました。 着信JSONは、 RFC 8259 に従ってUTF-8を使用してエンコードする必要がありますが、FlaskはUTF-8、-16、または-32を自動検出します。 :pr: `2691`- MAX_COOKIE_SIZE および
Response.max_cookie_size
を追加して、ブラウザが無視する可能性のある大きなCookieについてWerkzeugが警告するタイミングを制御します。 :pr: `2693` - ドキュメントのテーマを更新して、小さなウィンドウでドキュメントの見栄えを良くしました。 :pr: `2709`
- チュートリアルドキュメントとサンプルプロジェクトを書き直して、新しいユーザーが一般的な落とし穴を回避できるように、より構造化されたアプローチを採用しました。 :pr: `2676`
バージョン0.12.3
2018年4月26日リリース
Request.get_json()
は任意のエンコーディングを受け入れなくなりました。 着信JSONは、 RFC 8259 に従ってUTF-8を使用してエンコードする必要がありますが、FlaskはUTF-8、-16、または-32を自動検出します。 :issue: `2692`python -m flask
を使用する場合のインポートに関するPythonの警告を修正しました。 :issue: `2666`- 場合によっては、無効な
Range
リクエストによって引き起こされるValueError
を修正します。
バージョン0.12.2
2017年5月16日リリース
- Windowsの
safe_join
のバグを修正しました。
バージョン0.12.1
2017年3月31日リリース
- インポートされたアプリケーションモジュール内で
ImportError
が発生したときに、flask run
にNoAppException
が表示されないようにします。 - Python3の
app.config.from_pyfile
のエンコード動作を修正しました。 :issue: `2118` app.run
のデフォルト値として存在する場合は、SERVER_NAME
構成を使用します。 :issue: `2109` 、:pr:` 2152`KeyboardInterrupt
などのBaseException
がリクエストハンドラで発生した場合は、None
の代わりに例外オブジェクトを使用してctx.auto_pop
を呼び出します。
バージョン0.12
2016年12月21日リリース、コードネームPunsch
- cliコマンドが
--version
に応答するようになりました。 send_file
のファイルのようなオブジェクトのMIMEタイプの推測とETagの生成は削除されました。 :issue: `104` 、: pr`1849`send_file
でのMIMEタイプの推測が大音量で失敗し、application/octet-stream
にフォールバックしなくなりました。 :pr: `1988`flask.safe_join
がos.path.join
:pr: `1730` のような複数のパスに参加できるようにします- 内部サーバーエラーを返す代わりに、開発サーバーをクラッシュさせた動作の変更を元に戻します。 :pr: `2006`
- 通常のリクエストディスパッチとエラーハンドラの両方の応答ハンドラを正しく呼び出します。
- アプリロガーのロガー伝播をデフォルトで無効にします。
send_file
で範囲要求のサポートを追加します。app.test_client
には、client.get
ごとではなく、直接設定できるようになったプリセットのデフォルト環境が含まれています。- PyPy3で実行しているときのクラッシュを修正しました。 :pr: `1814`
バージョン0.11
2016年5月29日リリース、コードネームAbsinthe
- トップレベル配列を
flask.jsonify()
にシリアル化するためのサポートが追加されました。 これにより、古いブラウザにセキュリティリスクが発生します。 詳細については、 JSONセキュリティを参照してください。 - before_render_templateシグナルを追加しました。
**kwargs
をflask.Test.test_client()
に追加して、flask.Flask.test_client_class
のコンストラクターへの追加のキーワード引数の受け渡しをサポートします。- set-cookieの動作を制御する
SESSION_REFRESH_EACH_REQUEST
構成キーが追加されました。True
に設定すると、永続セッションがリクエストごとに更新され、有効期間が延長されます。False
に設定すると、セッションが実際に変更された場合にのみ変更されます。 非永続セッションはこれによる影響を受けず、ブラウザウィンドウが閉じると常に期限切れになります。 - Flaskが受信データのカスタムJSONmimetypeをサポートするようになりました。
- ビュー関数から
(response, headers)
の形式でタプルを返すためのサポートが追加されました。 flask.Config.from_json()
を追加しました。flask.Flask.config_class
を追加しました。flask.Config.get_namespace()
を追加しました。- テンプレートは、デバッグモード以外で自動的に再ロードされなくなりました。 これは、新しい
TEMPLATES_AUTO_RELOAD
構成キーを使用して構成できます。 - Python3.3の名前空間ローダーの制限に対する回避策を追加しました。
- Python3.3の名前空間パッケージを使用する場合の明示的なルートパスのサポートが追加されました。
- クリックCLIシステムを介してローカルデバッグサーバーを起動するための flask および
flask.cli
モジュールを追加しました。 これは、古いflask.run()
方式よりも推奨されます。これは、設計が異なるため、より高速で信頼性が高く、Flask-Script
に置き換わるためです。 - 特定のクラスに一致するエラーハンドラーが最初にチェックされるようになりました。これにより、HTTP例外のサブクラスである例外をキャッチできます(
werkzeug.exceptions
内)。 これにより、拡張機能の作成者は、デフォルトで選択したHTTPエラーが発生する例外を作成できますが、必要に応じてカスタムエラーハンドラーでキャッチできます。 flask.Config.from_mapping()
を追加しました。- デバッグが無効になっている場合でも、Flaskはデフォルトでログに記録するようになりました。 ログ形式はハードコードされていますが、デフォルトのログ処理は
LOGGER_HANDLER_POLICY
構成キーを使用して無効にできます。 - 非推奨のモジュール機能を削除しました。
EXPLAIN_TEMPLATE_LOADING
構成フラグを追加しました。これを有効にすると、Flaskにテンプレートの検索方法を説明するように指示します。 これは、間違ったテンプレートがロードされたときにユーザーがデバッグするのに役立ちます。- テンプレートのロード用に登録された順序でブループリントの処理を実施します。
- テストスイートをpy.testに移植しました。
request.get_json()
を優先して、request.json
を非推奨にしました。- jsonify()メソッドに「pretty」および「compressed」セパレーター定義を追加します。
JSONIFY_PRETTYPRINT_REGULAR=False
の場合、区切り文字の後にデフォルトで含まれている不要な空白を削除することにより、JSON応答サイズを削減します。 - UNIXテキストファイルは改行で終わるのが慣例であり、この改行がない場合、一部のクライアントはうまく処理できないため、JSON応答は改行文字で終了するようになりました。 これは元々 https://github.com/postmanlabs/httpbin/issues/168 の一部として登場しました。 :pr: `1262`
- ユーザーが小文字バージョンの
options
でオーバーライドルールを登録した場合、自動的に提供されるOPTIONS
メソッドが正しく無効になるようになりました。 :issue: `1288` flask.json.jsonify
はdatetime.date
タイプをサポートするようになりました。 :pr: `1326`- すでにキャッチされた例外の例外情報をコンテキストティアダウンハンドラーにリークしないでください。 :pr: `1393`
- カスタムJinja環境サブクラスを許可します。 :pr: `1422`
- 拡張開発ガイドラインを更新しました。
flask.g
にpop()
メソッドとsetdefault
メソッドが追加されました。- デフォルトで
flask.templating.render_template_string
の自動エスケープをオンにします。 :pr: `1515` flask.ext
は非推奨になりました。 :pr: `1484`send_from_directory
は、サーバーOSでファイル名が無効な場合に、BadRequestを発生させるようになりました。 :pr: `1763`JSONIFY_MIMETYPE
構成変数を追加しました。 :pr: `1728`- ティアダウン処理中の例外により、不適切なアプリケーションコンテキストが長引くことはなくなりました。
- 壊れた
test_appcontext_signals()
テストケースを修正しました。 flask.helpers.find_package()
でAttributeError
を発生させ、is_package()
メソッドなしでPEP302インポートフックを使用した場合に発生する理由を説明する有用なメッセージを表示します。- リクエストまたはアプリのコンテキストを入力する前に発生した例外がティアダウンハンドラーに渡される問題を修正しました。
- 絶対URLが要求されたときに、テストクライアントの要求からクエリパラメーターが削除される問題を修正しました。
@before_first_request
を意図したとおりにデコレータにしました。- 名前付きのファイルストリームを送信するときのetagsのバグを修正しました。
send_from_directory
がアプリケーションのルートパスに正しく展開されない問題を修正しました。- 呼び出し後にフラグを反転するように、最初のリクエストハンドラの前のロジックを変更しました。 これにより、潜在的に危険であるがおそらく許可されるべきであるいくつかの使用が可能になります。
app.url_build_error_handlers
のハンドラーがBuildError
を再レイズするときのPython3のバグを修正しました。
バージョン0.10.1
2013年6月14日リリース
|tojson
が一重引用符を引用していなかったため、HTML属性でフィルターが正しく機能しなかった問題を修正しました。 これで、そのフィルターを一重引用符で囲まれた属性で使用できるようになりました。 これにより、angular.jsでそのフィルターを簡単に使用できるようになります。- セッションシステムに戻るバイト文字列のサポートが追加されました。 これは、トークン検証用のバイナリデータをセッションに入れる一般的なケースとの互換性を壊しました。
- 同じエンドポイントに対して同じメソッドを2回登録すると、例外が誤ってトリガーされる問題を修正しました。
バージョン0.10
2013年6月13日リリース、コードネームLimoncello
- 秘密鍵が漏洩した場合に攻撃者が及ぼす可能性のある影響を制限するために、デフォルトのCookieシリアル化形式をpickleからJSONに変更しました。 詳細については、バージョン0.10 を参照してください。
- 既存の
template_filter
メソッドファミリーに加えて、template_test
メソッドを追加しました。 - 既存の
template_filter
メソッドファミリーに加えて、template_global
メソッドを追加しました。 - x-sendfileのcontent-lengthヘッダーを設定します。
tojson
フィルターは、HTML5パーサーのスクリプトブロックをエスケープしないようになりました。- テンプレートで使用される
tojson
は、デフォルトで安全になりました。 これは、エスケープ動作が異なるために許可されました。 - すでに使用されているエンドポイントに新しい関数を登録しようとすると、Flaskでエラーが発生するようになりました。
- simplejsonのラッパーモジュールを追加し、datetimeオブジェクトのデフォルトのシリアル化を追加しました。 これにより、FlaskまたはFlask拡張機能によるJSONの処理方法をはるかに簡単にカスタマイズできます。
- 非推奨の内部
flask.session
モジュールエイリアスを削除しました。 代わりにflask.sessions
を使用してセッションモジュールを取得します。 これをflask.session
セッションプロキシと混同しないでください。 - テンプレートは、リクエストコンテキストなしでレンダリングできるようになりました。
request
、session
、およびg
オブジェクトは使用できず、ブループリントのコンテキストプロセッサは呼び出されないため、動作は少し異なります。 - 構成オブジェクトは、デフォルトでインポートされたテンプレートでも使用できるようにするコンテキストプロセッサを介さずに、実際のグローバルとしてテンプレートで使用できるようになりました。
- 非ASCIIエンコードのJSONを生成するオプションが追加されました。これにより、ネットワークを介して送信されるバイト数が少なくなります。
flask.json.dumps
がデフォルトでバイト文字列を返すことを期待する可能性のある既存のライブラリと混同しないようにデフォルトで無効になっています。 flask.g
は、リクエストコンテキストではなくアプリコンテキストに保存されるようになりました。flask.g
は、存在しないアイテムでエラーが発生しないようにするためのget()
メソッドを取得しました。flask.g
をin
演算子とともに使用して、定義内容を確認できるようになりました。これは反復可能であり、保存されているすべての属性を生成します。flask.Flask.request_globals_class
はflask.Flask.app_ctx_globals_class
に名前が変更されました。これは、0.10以降の名前よりも適切な名前です。request
、session
、g
もプロキシとしてテンプレートコンテキストに追加され、インポートされたテンプレートで使用できるようになりました。 ただし、マクロの外部で使用するとキャッシュが発生する可能性があるため、これらには十分注意する必要があります。- プロキシ例外が渡された場合、Flaskが間違ったエラーハンドラーを呼び出すことはなくなりました。
- ドメイン名で意図したとおりに機能しないローカルホストのChromeのCookieの回避策を追加しました。
- Google Chromeでより適切に機能するように、セッションからCookie値のデフォルトを選択するためのロジックを変更しました。
- 点滅テストを簡素化する
message_flashed
信号を追加しました。 - グリーンレットの操作を改善するために、リクエストコンテキストのコピーのサポートが追加されました。
- カスタムJSONHTTP例外サブクラスを削除しました。 それらに依存していた場合は、簡単に再導入できます。 ただし、インターフェイスに欠陥があるため、これらを使用することは強くお勧めしません。
- Pythonの要件が変更されました。Python3.3ポートの準備をするためにPython2.6または2.7が必要になりました。
- 分解システムへの例外の通知方法を変更しました。 これは、エラー処理プロセスの途中で何かが例外を処理する場合に、より信頼性が高くなりました。
- デバッグモードでのリクエストコンテキストの保存により、例外情報が保持されるようになりました。これは、ティアダウンハンドラーがエラーと成功のケースを区別できることを意味します。
JSONIFY_PRETTYPRINT_REGULAR
構成変数を追加しました。- Flaskは、異なるワーカー間でハッシュシードが異なるためにHTTPキャッシュを破棄しないように、デフォルトでJSONキーを注文するようになりました。
appcontext_pushed
およびappcontext_popped
信号を追加しました。- 組み込みのrunメソッドは、実行するデフォルトのポートを選択するときに
SERVER_NAME
を考慮に入れるようになりました。 - 古い
flask.request.json
プロパティの代わりにflask.request.get_json()
を追加しました。
バージョン0.9
2012年7月1日リリース、コードネームCampari
flask.Request.on_json_loading_failed()
は、デフォルトでJSON形式の応答を返すようになりました。flask.url_for()
関数は、生成されたリンクへのアンカーを生成できるようになりました。flask.url_for()
関数は、特定のHTTPメソッドに固有のURLルールを明示的に生成できるようになりました。- Loggerは、明示的に設定されていない場合にのみデバッグログ設定を返すようになりました。
- リクエストをシャットダウンするときに、WSGI環境とリクエストオブジェクト間の循環依存関係の登録を解除します。 つまり、応答がWSGIサーバーに返された後、環境
werkzeug.request
はNone
になりますが、ユーザーが循環を作成しない限り、CPythonでガベージコレクターを使用してリクエストを破棄する必要がないという利点があります。依存関係自体。 - セッションはコールバック後に保存されるようになったため、セッションペイロードがセッションに保存されている場合でも、リクエスト後のコールバックでセッションペイロードを変更できます。
flask.Flask
クラスは、可能であれば(必要な最初のパラメーター)、提供されたインポート名のインポートを回避し、Flaskインスタンスをプログラムで構築するツールに利益をもたらします。 Flaskクラスは、カスタムモジュールフックを備えたシステムでのインポートの使用にフォールバックします。 Google App Engine、またはインポート名がPython 2.7より前のzipアーカイブ(通常は.egg)内にある場合。- ブループリントには、アプリケーション全体にカスタムテンプレートフィルターを追加するためのデコレーター
flask.Blueprint.app_template_filter()
が追加されました。 - FlaskクラスとBlueprintクラスには、アプリケーション全体でカスタムテンプレートフィルターを追加するための非デコレーターメソッド
flask.Flask.add_template_filter()
およびflask.Blueprint.add_app_template_filter()
が含まれるようになりました。 flask.get_flashed_messages()
関数では、category_filter
引数を使用して、フラッシュされたメッセージカテゴリを個別のブロックにレンダリングできるようになりました。flask.Flask.run()
メソッドは、None
の場合のデフォルト値を使用して、host
およびport
引数に対してNone
を受け入れるようになりました。 これにより、構成値を使用してrunを呼び出すことができます。app.run(app.config.get('MYHOST'), app.config.get('MYPORT'))
、構成ファイルが提供されているかどうかに関係なく適切な動作をします。flask.render_template()
メソッドは、反復可能なテンプレート名または単一のテンプレート名のいずれかを受け入れるようになりました。 以前は、単一のテンプレート名のみを受け入れていました。 イテラブルでは、最初に見つかったテンプレートがレンダリングされます。flask.Flask.app_context()
を追加しました。これは、リクエストコンテキストと非常によく似ていますが、現在のアプリケーションへのアクセスのみを提供します。 これにより、アクティブなリクエストコンテキストなしでのURL生成のサポートも追加されます。- ビュー関数は、最初のインスタンスが
flask.Response
のインスタンスであるタプルを返すことができるようになりました。 これにより、ビュー関数からjsonify(error="error msg"), 400
を返すことができます。 Flask
およびBlueprint
は、flask.Flask.send_static_file()
(デフォルトの静的ファイルハンドラーに使用)を使用するときにFlaskから静的ファイルを提供する動作をオーバーライドするサブクラスのget_send_file_max_age()
フックを提供するようになりました)およびsend_file()
。 このフックにはファイル名が提供されます。これにより、たとえば、ファイル拡張子によってキャッシュコントロールを変更できます。send_file
および静的ファイルのデフォルトの最大経過時間は、デフォルトのget_send_file_max_age
実装で使用される新しいSEND_FILE_MAX_AGE_DEFAULT
構成変数を介して構成できます。- 外部ストレージを使用するセッション実装でメッセージの点滅を中断する可能性があるセッション実装の仮定を修正しました。
- 関数からのタプル戻り値の動作を変更しました。 これらは応答オブジェクトへの引数ではなくなり、定義された意味を持つようになりました。
flask.Flask.request_globals_class
を追加して、各リクエストの g インスタンスの作成時に特定のクラスを使用できるようにしました。- 登録時にメソッドを強制的に追加する関数を表示するために
required_methods
属性を追加しました。 flask.after_this_request()
を追加しました。flask.stream_with_context()
と、予期しない動作を発生させることなくコンテキストを複数回プッシュする機能が追加されました。
バージョン0.8.1
2012年7月1日リリース
- 文書化されていない
flask.session
モジュールがPython2.5で正しく機能しない問題を修正しました。 使用すべきではありませんが、パッケージマネージャーにいくつかの問題を引き起こしました。
バージョン0.8
2011年9月29日リリース、コードネームRakija
- セッションサポートをセッションインターフェイスにリファクタリングし、Flaskクラスをオーバーライドせずにセッションの実装を変更できるようにしました。
- 空のセッションCookieが自動的に適切に削除されるようになりました。
- ビュー関数は、自動OPTIONS実装の取得をオプトアウトできるようになりました。
- HTTP例外とBadRequestエラーをトラップして、トレースバックに正常に表示されるようになりました。
- デバッグモードのFlaskは、いくつかの一般的な問題を検出し、それらについて警告しようとします。
- デバッグモードのFlaskは、最初のリクエストが処理された後にビューがアタッチされた場合、アサーションエラーで文句を言うようになりました。 これにより、ユーザーがビューコードを事前にインポートするのを忘れた場合に、より早いフィードバックが得られます。
- 最初のリクエストの開始時に1回だけトリガーされるコールバックを登録する機能が追加されました。 (
Flask.before_first_request()
) - 不正な形式のJSONデータは、値エラーではなく、不正なリクエストHTTP例外をトリガーするようになりました。これは、通常、処理されない場合、500内部サーバーエラーになります。 これは後方互換性のない変更です。
- アプリケーションには、リソースとモジュールが配置されているルートパスだけでなく、実行時に変更されるファイル(アップロードなど)をドロップするための指定された場所であるインスタンスパスも含まれるようになりました。 また、これは概念的にはインスタンスに依存し、バージョン管理の外部にあるため、構成ファイルなどを配置するのに最適な場所です。 詳細については、インスタンスフォルダを参照してください。
APPLICATION_ROOT
構成変数を追加しました。session_transaction()
を実装して、テスト環境からセッションを簡単に変更できるようにしました。- テストクライアントを内部でリファクタリングしました。
APPLICATION_ROOT
構成変数とSERVER_NAME
が、デフォルトとしてテストクライアントによって適切に使用されるようになりました。 - プラグ可能な(クラスベースの)ビューのより簡単な装飾をサポートするために
flask.views.View.decorators
が追加されました。 - テストクライアントを「with」ステートメントとともに使用すると、ティアダウンハンドラーの実行がトリガーされない問題を修正しました。
- セッションCookieパラメータのより細かい制御が追加されました。
- メソッドビューへのHEADリクエストは、ハンドラーが実装されていない場合、
get
メソッドに自動的にディスパッチされるようになりました。 - 拡張機能をインポートするための仮想
flask.ext
パッケージを実装しました。 - 例外のコンテキスト保存は、Flask自体の不可欠なコンポーネントであり、テストクライアントのコンポーネントではなくなりました。 これにより、一部の内部ロジックがクリーンアップされ、単体テストでのリクエストコンテキストの暴走の可能性が低くなります。
- ブループリントまたはモジュールが含まれている場合に、Jinja2環境の
list_templates
メソッドが正しい名前を返さない問題を修正しました。
バージョン0.7.2
2011年7月6日リリース
- ブループリントでURLプロセッサが正しく機能しない問題を修正しました。
バージョン0.7.1
2011年6月29日リリース
- 2.5の互換性を壊した不足している将来のインポートを追加しました。
- ブループリントの無限リダイレクトの問題を修正しました。
バージョン0.7
2011年6月28日リリース、コードネームGrappa
- サブクラスが
OPTIONS
応答のデフォルトの動作を変更するために使用できるmake_default_options_response()
を追加しました。 - バインドされていないローカルは、
AttributeError
ではなく適切なRuntimeError
を発生させるようになりました。 - ファイルオブジェクトに基づくMIMEタイプの推測とetagのサポートは、信頼性が低いため、
flask.send_file()
では非推奨になりました。 代わりにファイル名を渡すか、独自のetagを添付して、適切なmimetypeを手動で提供してください。 - モジュールの静的ファイル処理では、静的フォルダーの名前を明示的に指定する必要があります。 以前の自動検出は信頼性が低く、GoogleのAppEngineで問題を引き起こしていました。 1.0まで、古い動作は引き続き機能しますが、依存関係の警告が発行されます。
- Flaskがjythonで実行される問題を修正しました。
- 以前は
DEBUG
のみにリンクされ、現在はDEBUG
または [のいずれかにリンクされている例外伝播の設定を反転するために使用できるPROPAGATE_EXCEPTIONS
構成変数を追加しました。 X195X]。 - Flaskは、
add_url_rule
関数を介して追加されたルールに内部的に依存しなくなり、URLマップに追加された通常のwerkzeugルールも受け入れることができるようになりました。 - フラスコアプリケーションオブジェクトに
endpoint
メソッドを追加しました。これにより、デコレータを使用して任意のエンドポイントへのコールバックを登録できます。 - 0.6で誤って導入されたDateの代わりに、静的ファイル送信にLast-Modifiedを使用します。
- ローダー作成プロセスをオーバーライドするために
create_jinja_loader
を追加しました。 config.from_pyfile
のサイレントフラグを実装しました。- 例外が発生したかどうかに関係なく、リクエストの最後に実行する必要がある関数用に、
teardown_request
デコレータを追加しました。 また、after_request
の動作が変更されました。 例外が発生したときに実行されなくなりました。 新しいティアダウン処理へのアップグレードを参照してください flask.has_request_context()
を実装- 非推奨の
init_jinja_globals
。 同じ機能を実現するには、代わりにcreate_jinja_environment()
メソッドをオーバーライドしてください。 flask.safe_join()
を追加しました- 自動JSONリクエストデータの解凍で、charsetmimetypeパラメーターが確認されるようになりました。
- セッションにメッセージがない場合は、
flask.get_flashed_messages()
のセッションを変更しないでください。 before_request
ハンドラーは、エラーのあるリクエストを中止できるようになりました。- ユーザー例外ハンドラーを定義することはできません。 これにより、リクエスト処理中に発生する可能性のある特定のエラー(データベース接続エラー、リモートリソースからのタイムアウトなど)に対して、中央ハブからカスタムエラーメッセージを提供できます。
- ブループリントは、ブループリント固有のエラーハンドラーを提供できます。
- 一般的な Pluggable Views (クラスベースのビュー)を実装しました。
バージョン0.6.1
2010年12月31日リリース
- デフォルトの
OPTIONS
応答が、Allow
ヘッダー内のすべての有効なメソッドを公開していなかった問題を修正しました。 - Jinja2テンプレート読み込み構文で、テンプレート読み込みパスの前に「./」を使用できるようになりました。 以前は、これによりモジュールのセットアップで問題が発生していました。
- モジュールのサブドメイン設定が静的フォルダーで無視される問題を修正しました。
- ホストサーバーがWindowsベースのオペレーティングシステムであり、クライアントがバックスラッシュを使用してファイルが公開されているディレクトリをエスケープする場合に、クライアントが任意のファイルをダウンロードできるセキュリティの問題を修正しました。
バージョン0.6
2010年7月27日リリース、コードネームウイスキー
- アフターリクエスト関数は、登録の逆の順序で呼び出されるようになりました。
- アプリケーションがURLルールにメソッドとして「OPTIONS」を明示的に追加しない限り、OPTIONSはFlaskによって自動的に実装されるようになりました。 この場合、自動OPTIONS処理は開始されません。
- モジュール用の静的フォルダーがない場合でも、静的ルールが適用されるようになりました。 これは、静的フォルダーが.ymlファイルのマッピングの一部である場合に静的フォルダーを削除するGAEを支援するために実装されました。
config
は、config
としてテンプレートで使用できるようになりました。- コンテキストプロセッサは、レンダリング関数に直接渡される値を上書きしなくなりました。
- 新しい
MAX_CONTENT_LENGTH
構成値を使用して着信要求データを制限する機能が追加されました。 flask.Module.add_url_rule()
メソッドのエンドポイントは、アプリケーションオブジェクトの同じ名前の関数と一貫性を保つために、オプションになりました。- ビューでの応答オブジェクトインスタンスの作成を簡素化する
flask.make_response()
関数が追加されました。 - ブリンカーに基づくシグナリングサポートが追加されました。 この機能は現在オプションであり、拡張機能やアプリケーションで使用される予定です。 使用する場合は、必ず点滅器を装着してください。
- URLアダプターの作成方法をリファクタリングしました。 このプロセスは、
create_url_adapter()
メソッドで完全にカスタマイズできるようになりました。 - モジュールは、URLプレフィックスだけでなく、サブドメインに登録できるようになりました。 これにより、モジュール全体を構成可能なサブドメインにバインドできます。
バージョン0.5.2
2010年7月15日リリース
- モジュールが使用されたときにディレクトリからテンプレートをロードする際の別の問題を修正しました。
バージョン0.5.1
2010年7月6日リリース
- モジュールが使用されている場合のディレクトリからのテンプレートのロードに関する問題を修正します。
バージョン0.5
2010年7月6日リリース、コードネームCalvados
- サーバー名を指定できないことによって引き起こされたサブドメインのバグを修正しました。 サーバー名は、
SERVER_NAME
構成キーで設定できるようになりました。 このキーは、セッションCookieのクロスサブドメイン全体を設定するためにも使用されるようになりました。 - 自動エスケープは、すべてのテンプレートでアクティブではなくなりました。 代わりに、
.html
、.htm
、.xml
、および.xhtml
に対してのみアクティブになります。 テンプレート内では、この動作はautoescape
タグで変更できます。 - 内部でフラスコをリファクタリングしました。 現在、複数のファイルで構成されています。
flask.send_file()
はetagを発行し、条件付き応答を実行する機能が組み込まれています。- (一時的に)zip形式のアプリケーションのサポートを終了しました。 これはめったに使用されない機能であり、いくつかの紛らわしい動作につながりました。
- パッケージごとのテンプレートと静的ファイルディレクトリのサポートが追加されました。
- モジュールのサポートが改善されたため、0.5では使用されなくなった
create_jinja_loader
のサポートが削除されました。 - 任意のディレクトリからファイルを公開するためのヘルパー関数が追加されました。
バージョン0.4
2010年6月18日リリース、コードネームRakia
- モジュールからアプリケーション全体のエラーハンドラーを登録する機能が追加されました。
after_request()
ハンドラーは、リクエストが例外で終了し、エラー処理ページが起動した場合にも呼び出されるようになりました。- テストクライアントには、リクエストコンテキストをもう少し長く保持する機能がありません。 これは、テストのためにリクエストスタックをポップしないカスタムリクエストをトリガーするためにも使用できます。
- Python標準ライブラリはロガーをキャッシュするため、ロガーの名前は、単体テストをより適切にサポートするように構成できるようになりました。
- ユニットテストヘルパーをアクティブ化できる
TESTING
スイッチを追加しました。 - デバッグが有効になっている場合、ロガーは
DEBUG
モードに切り替わります。
バージョン0.3.1
2010年5月28日リリース
flask.Config.from_envvar()
のエラー報告のバグを修正しました- フラスコから未使用のコードを削除しました
- リリースには、開発用の残りのファイル(テーマ用の.gitフォルダー、zipおよびpdfファイルで作成されたドキュメント、および一部の.pycファイル)が含まれなくなりました。
バージョン0.3
2010年5月28日リリース、コードネームSchnaps
- フラッシュメッセージのカテゴリのサポートが追加されました。
- これで、アプリケーションは
logging.Handler
を構成し、デバッグモードでないときに、要求処理の例外をそのロガーにログに記録します。 これにより、たとえばサーバーエラーに関するメールを受信できるようになります。 - コンソールで再生するためにwithステートメントを使用する必要のないコンテキストバインディングのサポートが追加されました。
- リクエストコンテキストがwithステートメント内で利用できるようになり、リクエストコンテキストをさらにプッシュしたりポップしたりできるようになりました。
- 構成のサポートが追加されました。
バージョン0.2
2010年5月12日リリース、コードネームイエーガーマイスター
- さまざまなバグ修正
- 統合されたJSONサポート
get_template_attribute()
ヘルパー関数を追加しました。add_url_rule()
もビュー機能を登録できるようになりました。- リファクタリングされた内部リクエストディスパッチ。
- サーバーは、Chromeの問題を修正するために、デフォルトで127.0.0.1をリッスンするようになりました。
- 外部URLのサポートが追加されました。
send_file()
のサポートが追加されました- プラグ可能なアプリケーションをより適切にサポートするためのモジュールサポートと内部リクエスト処理リファクタリング。
- セッションは、セッションごとに永続的に設定できるようになりました。
- 秘密鍵の欠落に関するエラー報告が改善されました。
- GoogleAppengineのサポートが追加されました。
バージョン0.1
2010年4月16日リリース
- 最初の公開プレビューリリース。