變更

版本 3.1.1

未發布

  • 修正 cli_runner.invoke 的類型提示。#5645

版本 3.1.0

發布於 2024-11-13

  • 移除對 Python 3.8 的支援。#5623

  • 更新最低依賴版本至最新的功能發布版本。Werkzeug >= 3.1, ItsDangerous >= 2.2, Blinker >= 1.9。#5624,5633

  • 提供組態選項以控制自動選項回應。#5496

  • Flask.open_resource/open_instance_resourceBlueprint.open_resource 接受 encoding 參數,用於在文字模式下開啟時使用。預設值為 utf-8#5504

  • Request.max_content_length 可以針對每個請求進行自訂,而不僅限於透過 MAX_CONTENT_LENGTH 組態。新增 MAX_FORM_MEMORY_SIZEMAX_FORM_PARTS 組態。在安全性頁面新增關於資源限制的文件。#5625

  • 新增對 Partitioned cookie 屬性 (CHIPS) 的支援,透過 SESSION_COOKIE_PARTITIONED 組態。#5472

  • -e path 優先於預設的 .env.flaskenv 檔案。load_dotenv 除了路徑之外,還會載入預設檔案,除非傳遞 load_defaults=False#5628

  • 支援使用 SECRET_KEY_FALLBACKS 組態進行金鑰輪換,這是一個舊密鑰列表,仍然可以用於取消簽署。擴充套件將需要新增支援。#5621

  • 修正設定 host_matching=Truesubdomain_matching=False 如何與 SERVER_NAME 互動。設定 SERVER_NAME 不再限制請求僅限於該網域。#5553

  • Request.trusted_hosts 在路由期間檢查,並且可以透過 TRUSTED_HOSTS 組態設定。#5636

版本 3.0.3

發布於 2024-04-07

  • 預設的 hashlib.sha1 可能在 FIPS 版本中不可用。不要在匯入時存取它,以便開發人員有時間更改預設值。#5448

  • 不要在 sansio scaffold 中初始化 cli 屬性,而是在具體的 Flask 類別中初始化。#5270

版本 3.0.2

發布於 2024-02-03

  • 修正 jinja_loader 屬性的類型。#5388

  • 修正 --extra-files--exclude-patterns CLI 選項的錯誤。#5391

版本 3.0.1

發布於 2024-01-18

  • 修正 send_filepath 參數的類型。#5336

  • 修正 flask run --key 選項的錯誤訊息中的錯字。#5344

  • Session 資料在未依賴內建 json.loads object_hook 的情況下取消標記。這允許其他不實作該功能的 JSON 提供者。#5381

  • 在使用 mypy strict 模式時解決更多類型發現。#5383

版本 3.0.0

發布於 2023-09-30

  • 移除先前已棄用的程式碼。#5223

  • 棄用 __version__ 屬性。改為使用功能偵測或 importlib.metadata.version("flask")#5230

  • 重新架構程式碼,使 Flask (app) 和 Blueprint 類別具有 Sans-IO 基底類別。#5127

  • 允許 self 作為 url_for 的引數。#5264

  • 需要 Werkzeug >= 3.0.0。

版本 2.3.3

發布於 2023-08-21

  • Python 3.12 相容性。

  • 需要 Werkzeug >= 2.3.7。

  • 使用 flit_core 而不是 setuptools 作為建置後端。

  • 重構應用程式根目錄和實例路徑的判斷方式。#5160

版本 2.3.2

發布於 2023-05-01

  • 當 session 被存取、修改或重新整理時,設定 Vary: Cookie 標頭。

  • 更新 Werkzeug 需求至 >=2.3.3 以套用最近的錯誤修正。

版本 2.3.1

發布於 2023-04-25

  • 恢復已棄用的 from flask import Markup#5084

版本 2.3.0

發布於 2023-04-25

  • 移除對 Python 3.7 的支援。#5072

  • 更新最低需求至最新版本:Werkzeug>=2.3.0, Jinja2>3.1.2, itsdangerous>=2.1.2, click>=8.1.3。

  • 移除先前已棄用的程式碼。#4995

    • 已移除已棄用的 _app_ctx_stack_request_ctx_stack 物件的 pushpop 方法。top 仍然存在,以便讓擴充套件有更多時間更新,但它將會被移除。

    • 已移除 FLASK_ENV 環境變數、ENV 組態鍵和 app.env 屬性。

    • 已移除 app 上的 session_cookie_namesend_file_max_age_defaultuse_x_sendfilepropagate_exceptionstemplates_auto_reload 屬性。

    • 已移除 JSON_AS_ASCIIJSON_SORT_KEYSJSONIFY_MIMETYPEJSONIFY_PRETTYPRINT_REGULAR 組態鍵。

    • 已移除 app.before_first_requestbp.before_app_first_request 裝飾器。

    • 已移除 app 和 blueprint 上的 json_encoderjson_decoder 屬性,以及對應的 json.JSONEncoderJSONDecoder 類別。

    • 已移除 json.htmlsafe_dumpshtmlsafe_dump 函式。

    • 在註冊藍圖後呼叫設定方法是一個錯誤,而不是警告。#4997

  • flask 匯入 escapeMarkup 已棄用。改為直接從 markupsafe 匯入它們。#4996

  • 已棄用 app.got_first_request 屬性。#4997

  • 已棄用 locked_cached_property 裝飾器。如果需要鎖定,請在裝飾函式內使用鎖定。#4993

  • 訊號始終可用。blinker>=1.6.2 是必要的依賴項。已棄用 signals_available 屬性。#5056

  • 訊號支援 async 訂閱者函式。#5049

  • 移除可能導致請求非常短暫地相互阻塞的鎖定使用。#4993

  • 使用具有 pyproject.toml 的現代封裝中繼資料,而不是 setup.cfg#4947

  • 確保子網域與巢狀藍圖一起應用。#4834

  • config.from_file 可以使用 text=False 來指示解析器想要二進制檔案。#4989

  • 如果藍圖是以空名稱建立的,則會引發 ValueError#5010

  • SESSION_COOKIE_DOMAIN 不會回退到 SERVER_NAME。預設值是不設定網域,現代瀏覽器將其解釋為精確匹配,而不是子網域匹配。關於 localhost 和 IP 位址的警告也被移除。#5051

  • 當使用網域匹配時,routes 命令會顯示每個規則的 subdomainhost#5004

  • 使用延遲評估註解。#5071

版本 2.2.5

發布於 2023-05-02

  • 更新以相容於 Werkzeug 2.3.3。

  • 當 session 被存取、修改或重新整理時,設定 Vary: Cookie 標頭。

版本 2.2.4

發布於 2023-04-25

  • 更新以相容於 Werkzeug 2.3。

版本 2.2.3

發布於 2023-02-15

  • 預設情況下,針對 .svg 範本檔案啟用自動跳脫。#4831

  • 修正 template_folder 的類型以接受 pathlib.Path#4892

  • 新增 --debug 選項至 flask run 命令。#4777

版本 2.2.2

發布於 2022-08-08

  • 更新 Werkzeug 依賴項至 >= 2.2.2。這包含與新的更快速路由器、標頭解析和開發伺服器相關的修正。#4754

  • 修正 app.env 的預設值為 "production"。此屬性仍然已棄用。#4740

版本 2.2.1

發布於 2022-08-03

  • 設定或存取 json_encoderjson_decoder 會引發棄用警告。#4732

版本 2.2.0

發布於 2022-08-01

  • 移除先前已棄用的程式碼。#4667

    • 已移除一些 send_file 參數的舊名稱。download_name 取代 attachment_filenamemax_age 取代 cache_timeout,而 etag 取代 add_etags。此外,path 取代 send_from_directory 中的 filename

    • 已移除傳回 AppContext.gRequestContext.g 屬性。

  • 更新 Werkzeug 依賴項至 >= 2.2。

  • 應用程式和請求上下文是直接使用 Python 上下文變數而不是 Werkzeug 的 LocalStack 進行管理的。這應該可以帶來更好的效能和記憶體使用。#4682

    • 擴充套件維護者請注意,_app_ctx_stack.top_request_ctx_stack.top 已棄用。改為使用唯一前綴將資料儲存在 g 上,例如 g._extension_name_attr

  • 已棄用 FLASK_ENV 環境變數和 app.env 屬性,移除開發模式和偵錯模式之間的區別。偵錯模式應直接使用 --debug 選項或 app.run(debug=True) 進行控制。#4714

  • 已棄用 app 上代理組態鍵的一些屬性:session_cookie_namesend_file_max_age_defaultuse_x_sendfilepropagate_exceptionstemplates_auto_reload。改為使用相關的組態鍵。#4716

  • Flask 應用程式物件新增新的自訂點,用於許多先前全域行為。

    • flask.url_for 將呼叫 app.url_for#4568

    • flask.abort 將呼叫 app.aborterFlask.aborter_classFlask.make_aborter 可用於自訂此 aborter。#4567

    • flask.redirect 將呼叫 app.redirect#4569

    • flask.jsonJSONProvider 的實例。可以設定不同的提供者以使用不同的 JSON 函式庫。flask.jsonify 將呼叫 app.json.responseflask.json 中的其他函式將呼叫 app.json 中的對應函式。#4692

  • JSON 組態已移至預設 app.json 提供者上的屬性。JSON_AS_ASCIIJSON_SORT_KEYSJSONIFY_MIMETYPEJSONIFY_PRETTYPRINT_REGULAR 已棄用。#4692

  • 在 app 或 blueprint 上設定自訂 json_encoderjson_decoder 類別,以及對應的 json.JSONEncoderJSONDecoder 類別,已棄用。現在可以使用 app.json 提供者介面覆寫 JSON 行為。#4692

  • 已棄用 json.htmlsafe_dumpsjson.htmlsafe_dump,該函式現在已內建於 Jinja 中。#4692

  • 重構 register_error_handler 以合併錯誤檢查。重寫一些錯誤訊息以使其更一致。#4559

  • 使用 Blueprint 裝飾器和函數,這些裝飾器和函數旨在在註冊藍圖後進行設定,將顯示警告。在下一個版本中,這將變成一個錯誤,就像應用程式設定方法一樣。#4571

  • 已棄用 before_first_request。改為在建立應用程式時執行設定程式碼。#4605

  • 新增 View.init_every_request 類別屬性。如果視圖子類別將其設定為 False,則視圖不會在每個請求上建立新的實例。#2520

  • flask.cli.FlaskGroup Click 群組可以巢狀結構化為自訂 CLI 中的子命令。#3263

  • 新增 --app--debug 選項至 flask CLI,而不是要求透過環境變數設定它們。#2836

  • 新增 --env-file 選項至 flask CLI。這允許指定一個 dotenv 檔案,除了 .env.flaskenv 之外還載入該檔案。#3108

  • 不再需要在 app.cliblueprint.cli 上使用 @with_appcontext 裝飾自訂 CLI 命令,在該點應用程式上下文已處於活動狀態。#2410

  • SessionInterface.get_expiration_time 使用時區感知的值。#4645

  • 視圖函式可以直接傳回產生器,而無需將它們包裝在 Response 中。#4629

  • 新增 stream_templatestream_template_string 函式,以將範本呈現為片段流。#4629

  • 在偵錯和測試期間,上下文保留的新實作。#4666

    • 當在互動式偵錯器控制台中執行程式碼時,requestg 和其他上下文區域變數指向正確的資料。#2836

    • Teardown 函式總是在請求結束時執行,即使上下文被保留也是如此。它們也會在彈出保留的上下文後執行。

    • stream_with_context 將上下文與 with client 區塊分開保留。當呼叫 response.get_data()response.close() 時,它將被清除。

  • 允許從視圖函式傳回列表,以將其轉換為 JSON 回應,就像字典一樣。#4672

  • 在進行類型檢查時,允許從視圖函式傳回 TypedDict#4695

  • flask run 命令中移除 --eager-loading/--lazy-loading 選項。應用程式始終在第一次時急切載入,然後在重新載入器中延遲載入。重新載入器始終立即列印錯誤,但繼續提供服務。移除先前實作使用的內部 DispatchingApp 中介軟體。#4715

版本 2.1.3

發布於 2022-07-13

  • 內聯一些僅用於某些 CLI 命令的可選匯入。#4606

  • 放寬 after_request 函式的類型註解。#4600

  • 命名空間套件的 instance_path 使用最接近匯入子模組的路徑。#4610

  • 當在應用程式上下文之外使用 render_templaterender_template_string 時,提供更清晰的錯誤訊息。#4693

版本 2.1.2

發布於 2022-04-28

  • 修正 json.loads 的類型註解,它接受 str 或 bytes。#4519

  • flask run 上的 --cert--key 選項可以以任意順序給定。#4459

版本 2.1.1

發布於 2022-03-30

  • 將 importlib_metadata 的最低所需版本設定為 3.6.0,這是 Python < 3.10 上所必需的。#4502

版本 2.1.0

發布於 2022-03-28

  • 移除對 Python 3.6 的支援。#4335

  • 更新 Click 依賴項至 >= 8.0。#4008

  • 移除先前已棄用的程式碼。#4337

    • CLI 不會將 script_info 傳遞給應用程式工廠函式。

    • config.from_json 已被 config.from_file(name, load=json.load) 取代。

    • json 函式不再接受 encoding 參數。

    • 已移除 safe_join,改為使用 werkzeug.utils.safe_join

    • 已移除 total_seconds,改為使用 timedelta.total_seconds

    • 同一個藍圖不能以相同的名稱註冊。註冊時使用 name= 來指定唯一名稱。

    • 測試客戶端的 as_tuple 參數已移除。改為使用 response.request.environ#4417

  • 在 2.0 中,send_filesend_from_directory 中的某些參數已重新命名。舊名稱的棄用期延長至 2.2。請務必在顯示棄用警告的情況下進行測試。

    • attachment_filename 已重新命名為 download_name

    • cache_timeout 已重新命名為 max_age

    • add_etags 已重新命名為 etag

    • filename 已重新命名為 path

  • 已棄用 RequestContext.g 屬性。改為直接使用 gAppContext.g#3898

  • copy_current_request_context 可以裝飾 async 函式。#4303

  • CLI 使用 importlib.metadata 而不是 pkg_resources 來載入命令入口點。#4419

  • 覆寫 FlaskClient.open 不會在重新導向時導致錯誤。#3396

  • 新增 --exclude-patterns 選項至 flask run CLI 命令,以指定重新載入器將忽略的模式。#4188

  • 當使用延遲載入(偵錯器的預設值)時,來自 flask run 命令的 Click 上下文在載入器線程中仍然可用。#4460

  • 刪除 session cookie 會使用 httponly 標誌。#4485

  • 放寬 errorhandler 的類型,以允許使用者使用更精確的類型並多次裝飾相同的函式。#4095, 4295, 4297

  • 修正 __exit__ 方法的類型,以獲得與 ExitStack 更好的相容性。#4474

  • 從 Werkzeug 來看,對於重新導向回應,預設情況下 Location 標頭 URL 將保持相對,並排除 scheme 和網域。#4496

  • 新增 Config.from_prefixed_env() 以從以 FLASK_ 或另一個前綴開頭的環境變數載入組態值。預設情況下,這會將值解析為 JSON,並允許在巢狀字典中設定鍵。#4479

版本 2.0.3

發布日期 2022-02-14

  • 測試用戶端的 as_tuple 參數已被棄用,並將在 Werkzeug 2.1 中移除。現在 Flask 中也已棄用,將在 Flask 2.1 中移除,但在 2.0.x 版本中仍保持相容性。請改用 response.request.environ 取代。 #4341

  • 修正 errorhandler 裝飾器的類型註解。 #4295

  • 還原 CLI 的一項變更,該變更導致在導入應用程式時隱藏 ImportError 追溯。 #4307

  • app.json_encoderjson_decoder 僅在它們具有自訂行為時才傳遞給 dumpsloads。這提高了效能,主要是在 PyPy 上。 #4349

  • after_this_request 在請求上下文之外使用時,提供更清晰的錯誤訊息。 #4333

版本 2.0.2

發布日期 2021-10-04

  • 修正 teardown_* 方法的類型註解。 #4093

  • 修正 before_requestbefore_app_request 裝飾器的類型註解。 #4104

  • 修正了類型標註要求範本全域裝飾器接受不帶參數的函數的問題。 #4098

  • 支援帶有非同步處理器的 View 和 MethodView 實例。 #4112

  • 增強 app.errorhandler 裝飾器的類型標註。 #4095

  • 修正了使用不同名稱重複註冊藍圖的問題。 #4124

  • 修正 static_folder 的類型以接受 pathlib.Path#4150

  • jsonify 透過編碼為 str 來處理 decimal.Decimal#4157

  • 正確處理 CLI 延遲載入中引發的延遲錯誤。 #4096

  • CLI 載入器處理 create_app 函數中的 **kwargs#4170

  • 修正 before_request 和其他在視圖返回之前觸發的回呼的順序。它們從應用程式向下調用到最接近的巢狀藍圖。 #4229

版本 2.0.1

發布日期 2021-05-21

  • send_from_directory 中重新新增 filename 參數。filename 參數已重新命名為 path,舊名稱已棄用。 #4019

  • 將頂層名稱標記為已匯出,以便類型檢查理解使用者專案中的導入。 #4024

  • 修正 g 的類型註解,並告知 mypy 它是一個具有任意屬性的命名空間物件。 #4020

  • 修正了一些在 Python 3.6.0 中不可用的類型。 #4040

  • 改進 send_filesend_from_directoryget_send_file_max_age 的類型標註。 #4044, #4026

  • 當藍圖名稱包含點時顯示錯誤訊息。. 具有特殊含義,它用於分隔(巢狀)藍圖名稱和端點名稱。 #4041

  • 合併在建立時具有 url_prefix 值的巢狀藍圖的 URL 前綴。 #4037

  • 還原對 URL 匹配順序的變更。URL 再次在會話載入後進行匹配,因此會話在自訂 URL 轉換器中可用。 #4053

  • 重新新增已棄用的 Config.from_json,它在早期被意外移除。 #4078

  • 改進使用 Callable 在其類型簽名中的某些函數的類型標註,重點是裝飾器工廠。 #4060

  • 巢狀藍圖以其點狀名稱註冊。這允許具有相同名稱的不同藍圖在不同位置進行巢狀處理。 #4069

  • register_blueprint 採用 name 選項來變更藍圖註冊時的(前點狀)名稱。這允許同一個藍圖使用唯一的 url_for 名稱多次註冊。使用相同名稱多次註冊同一個藍圖已被棄用。 #1091

  • 改進 stream_with_context 的類型標註。 #4052

版本 2.0.0

發布日期 2021-05-11

  • 停止支援 Python 2 和 3.5。

  • 提高其他 Pallets 專案的最低版本要求:Werkzeug >= 2、Jinja2 >= 3、MarkupSafe >= 2、ItsDangerous >= 2、Click >= 8。請務必查看每個專案的變更日誌。為了更好地與仍然需要 Click 7 的其他應用程式(例如 Celery)相容,目前還沒有對 Click 8 的硬性依賴,但是使用 Click 7 將觸發 DeprecationWarning,並且 Flask 2.1 將依賴 Click 8。

  • JSON 支援不再使用 simplejson。要使用另一個 JSON 模組,請覆寫 app.json_encoderjson_decoder#3555

  • JSON 函數的 encoding 選項已被棄用。 #3562

  • script_info 傳遞給應用程式工廠函數已被棄用。這在 flask 命令之外是不可移植的。如果需要,請使用 click.get_current_context().obj#3552

  • 當應用程式在查找命令時載入失敗時,CLI 會顯示更好的錯誤訊息。 #2741

  • 新增 SessionInterface.get_cookie_name 以允許動態設定會話 Cookie 名稱。 #3369

  • 新增 Config.from_file 以使用任意檔案載入器載入配置,例如 toml.loadjson.loadConfig.from_json 已棄用,建議改用此方法。 #3398

  • flask run 命令僅在重新載入時延遲錯誤。初始調用期間出現的錯誤將導致伺服器立即退出並顯示追溯。 #3431

  • 當以文字模式傳遞 io 物件時,send_file 會引發 ValueError。先前,它會回應 200 OK 和一個空檔案。 #3358

  • 當使用臨時憑證時,檢查 cryptography 程式庫而不是 PyOpenSSL。 #3492

  • 當使用工廠函數指定 FLASK_APP 時,可以傳遞關鍵字參數。 #3553

  • 當載入 .env.flaskenv 檔案時,目前的工作目錄不再變更為檔案的位置。 #3560

  • 當從視圖返回 (response, headers) 元組時,標頭會替換而不是擴展回應上的現有標頭。例如,這允許為 jsonify() 設定 Content-Type。如果需要擴展,請使用 response.headers.extend()#3628

  • Scaffold 類別為 FlaskBlueprint 類別提供了一個通用的 API。Blueprint 資訊儲存在屬性中,就像 Flask 一樣,而不是不透明的 lambda 函數。這旨在提高一致性和可維護性。 #3215

  • 移除會話 Cookie 時,包含 samesitesecure 選項。 #3726

  • 支援將 pathlib.Path 傳遞給 static_folder#3579

  • send_filesend_from_directorywerkzeug.utils 中實作的包裝器。 #3828

  • 某些 send_file 參數已重新命名,舊名稱已棄用。attachment_filename 已重新命名為 download_namecache_timeout 已重新命名為 max_ageadd_etags 已重新命名為 etag#3828, 3883

  • 即使 as_attachment=Falsesend_file 也會透過使用 Content-Disposition: inline 傳遞 download_name#3828

  • send_file 預設設定 conditional=Truemax_age=None。如果未設定 max_age,則 Cache-Control 設定為 no-cache,否則設定為 public。這告訴瀏覽器驗證條件請求,而不是使用定時快取。 #3828

  • helpers.safe_join 已棄用。請改用 werkzeug.utils.safe_join#3828

  • 請求上下文在開啟會話之前執行路由匹配。這可能允許會話介面根據 request.endpoint 變更行為。 #3776

  • 使用 Jinja 實作的 |tojson 過濾器。 #3881

  • 為常見的 HTTP 方法新增路由裝飾器。例如,@app.post("/login")@app.route("/login", methods=["POST"]) 的快捷方式。 #3907

  • 支援非同步視圖、錯誤處理器、請求前和請求後函數,以及拆解函數。 #3412

  • 支援巢狀藍圖。 #593, 1548, #3923

  • 將載入 .env.flaskenv 檔案時的預設編碼設定為「UTF-8」,以允許使用非 ASCII 字元。 #3931

  • 如果安裝了 readlineflask shell 會像預設的 python shell 一樣設定 Tab 鍵和歷史記錄完成功能。 #3941

  • helpers.total_seconds() 已棄用。請改用 timedelta.total_seconds()#3962

  • 新增類型提示。 #3973

版本 1.1.4

發布日期 2021-05-13

  • 更新 static_folder 以使用 _compat.fspath 而不是 os.fspath,以繼續支援 Python < 3.6 #4050

版本 1.1.3

發布日期 2021-05-13

  • 設定 Werkzeug、Jinja、Click 和 ItsDangerous 的最大版本。 #4043

  • 重新新增對 pathlib.Path 作為 static_folder 的支援。 #3579

版本 1.1.2

發布日期 2020-04-03

  • 解決在 Windows 上使用外部偵錯器執行 flask 命令時的問題。 #3297

  • 如果 Flask static_folder 參數以斜線結尾,則靜態路由不會捕獲所有 URL。 #3452

版本 1.1.1

發布日期 2019-07-08

  • 為了與某些擴充套件相容,重新新增了 flask.json_available 標誌。使用時將引發棄用警告,並將在 2.0.0 版本中移除。 #3288

版本 1.1.0

發布日期 2019-07-04

  • 將最低 Werkzeug 版本提高到 >= 0.15。

  • 停止支援 Python 3.4。

  • 對於 InternalServerError500 的錯誤處理器,將始終傳遞 InternalServerError 的實例。如果它們是由於未處理的異常而調用,則原始異常現在可以作為 e.original_exception 使用,而不是直接傳遞給處理器。如果處理器適用於基本 HTTPException,情況也是如此。這使得錯誤處理器的行為更加一致。 #3266

    • 即使沒有 500 錯誤處理器,也會為所有未處理的異常調用 Flask.finalize_request

  • Flask.logger 使用與 Flask.name 相同的名稱(作為 Flask(import_name) 傳遞的值)。這還原了 1.0 始終記錄到 "flask.app" 的行為,以便支援同一進程中的多個應用程式。如果檢測到需要移動的舊配置,將顯示警告。 #2866

  • RequestContext.copy 在請求上下文副本中包含當前會話物件。這可以防止 session 指向過時的物件。 #2935

  • 使用內建 RequestContext,Host 標頭中不可列印的 Unicode 字元將導致 HTTP 400 回應,而不是之前的 HTTP 500。 #2994

  • send_file 支援 PEP 519 中描述的 PathLike 物件,以支援 Python 3 中的 pathlib#3059

  • send_file 支援 BytesIO 部分內容。 #2957

  • open_resource 接受 "rt" 檔案模式。這仍然與 "r" 做同樣的事情。 #3163

  • 子類別使用在基類中設定的 MethodView.methods 屬性。 #3138

  • Flask.jinja_options 是一個 dict 而不是 ImmutableDict,以便更容易配置。變更仍然必須在建立環境之前進行。 #3190

  • 請求和回應包裝器的 Flask JSONMixin 已移至 Werkzeug。使用 Werkzeug 的版本,並具有 Flask 特定的支援。這將 Werkzeug 依賴項提高到 >= 0.15。 #3125

  • flask 命令入口點已簡化,以利用 Werkzeug 0.15 更好的重新載入器支援。這將 Werkzeug 依賴項提高到 >= 0.15。 #3022

  • 支援以正斜線結尾的 static_url_path#3134

  • 支援空的 static_folder,而無需設定空的 static_url_path#3124

  • jsonify 支援 dataclass 物件。 #3195

  • 允許自訂用於路由的 Flask.url_map_class#3069

  • 開發伺服器埠可以設定為 0,這會告知作業系統選擇一個可用的埠。 #2926

  • 來自 cli.load_dotenv 的傳回值與文件更加一致。如果未安裝 python-dotenv,或者給定的路徑不是檔案,它將傳回 False#2937

  • 當未安裝 Blinker 程式庫時,信號支援具有 connect_via 方法的 Stub。 #3208

  • flask run CLI 命令新增 --extra-files 選項,以指定在變更時將觸發重新載入器的額外檔案。 #2897

  • 允許從視圖函數傳回字典。類似於傳回字串將產生 text/html 回應的方式,傳回字典將調用 jsonify 以產生 application/json 回應。 #3111

  • 藍圖具有像 app.cli 一樣的 cli Click 群組。使用藍圖註冊的 CLI 命令將作為 flask 命令下的群組提供。 #1357

  • 當將測試用戶端用作上下文管理器 (with client:) 時,當區塊退出時,所有保留的請求上下文都會被彈出,確保正確清理巢狀上下文。 #3157

  • 當視圖傳回類型不受支援時,顯示更好的錯誤訊息。 #3214

  • flask.testing.make_test_environ_builder() 已被棄用,建議改用新的類別 flask.testing.EnvironBuilder#3232

  • 如果 Python 不是使用 SSL 支援建置的,則 flask run 命令不再失敗。使用 --cert 選項將顯示適當的錯誤訊息。 #3211

  • URL 匹配現在在推送請求上下文之後發生,而不是在建立請求上下文時發生。這允許自訂 URL 轉換器存取應用程式和請求上下文,例如查詢資料庫以獲取 ID。 #3088

版本 1.0.4

發布日期 2019-07-04

  • BadRequestKeyError 的關鍵資訊不再在偵錯模式外清除,因此錯誤處理器仍然可以存取它。這需要升級到 Werkzeug 0.15.5。 #3249

  • send_file 對 ":" 和 "/" 字元進行 URL 編碼,以在某些瀏覽器中獲得更相容的 UTF-8 檔案名稱支援。 #3074

  • 修復了 PEP 451 導入載入器和 pytest 5.x 的問題。 #3275

  • 在 stderr 而不是 stdout 上顯示關於 dotenv 的訊息。 #3285

版本 1.0.3

發布日期 2019-05-17

  • send_file 將檔案名稱編碼為 ASCII 而不是 Latin-1 (ISO-8859-1)。這修復了與 Gunicorn 的相容性問題,Gunicorn 對於標頭編碼比 PEP 3333 更嚴格。 #2766

  • 允許使用 FlaskGroup 的自訂 CLI 設定偵錯標誌,而不會始終根據環境變數覆寫它。 #2765

  • flask --version 輸出 Werkzeug 的版本並簡化 Python 版本。 #2825

  • send_file 處理作為原生 Python 2 字串 (位元組) 的 attachment_filename,其中包含 UTF-8 編碼的位元組。 #2933

  • HTTPException 註冊的捕獲所有錯誤處理器將不會處理 RoutingException,後者在路由期間在內部使用。這修復了 1.0 中引入的意外行為。 #2986

  • json 參數傳遞給 app.test_client 不會推送/彈出額外的應用程式上下文。 #2900

版本 1.0.2

發布日期 2018-05-02

  • 修復了藍圖前綴和路由之間合併斜線的更多向後相容性問題。 #2748

  • 修復當沒有路由時,flask routes 命令的錯誤。 #2751

版本 1.0.1

發布於 2018-04-29

  • 修復將 partials(沒有 __name__)註冊為視圖函式的問題。 #2730

  • 不要將從視圖函式返回的列表視為與元組相同。只有元組會被解釋為回應資料。 #2736

  • 合併 blueprint 的 url_prefix 和路由 URL 之間的額外斜線。這修復了 1.0 版本變更的一些向後相容性問題。 #2731, #2742

  • 僅在除錯模式下捕獲 BadRequestKeyError 錯誤,而不是所有 BadRequest 錯誤。這允許 abort(400) 繼續如預期般運作。 #2735

  • 可以將 FLASK_SKIP_DOTENV 環境變數設定為 1,以跳過自動載入 dotenv 檔案。 #2722

版本 1.0

發布於 2018-04-26

  • 不再支援 Python 2.6 和 3.3。

  • 提升最低依賴版本至最新的穩定版本:Werkzeug >= 0.14、Jinja >= 2.10、itsdangerous >= 0.24、Click >= 5.1。 #2586

  • 當從命令列執行 Flask 應用程式時,跳過 app.run。這避免了一些令人困惑的除錯行為。

  • JSONIFY_PRETTYPRINT_REGULAR 的預設值變更為 False~json.jsonify 預設返回精簡格式,在除錯模式下返回縮排格式。 #2193

  • Flask.__init__ 接受 host_matching 參數,並將其設定在 Flask.url_map 上。 #1559

  • Flask.__init__ 接受 static_host 參數,並在定義靜態路由時將其作為 host 參數傳遞。 #1559

  • send_file 支援 attachment_filename 中的 Unicode。 #2223

  • _scheme 參數從 url_for 傳遞到 Flask.handle_url_build_error#2017

  • Flask.add_url_rule 接受 provide_automatic_options 參數,以停用新增 OPTIONS 方法。 #1489

  • MethodView 子類別繼承自基底類別的方法處理器。 #1936

  • 在請求開始時開啟 session 時發生的錯誤,由應用程式的錯誤處理器處理。 #2254

  • Blueprints 獲得了 Blueprint.json_encoderBlueprint.json_decoder 屬性,以覆寫應用程式的編碼器和解碼器。 #1898

  • Flask.make_response 對於不良的回應類型,會引發 TypeError 而不是 ValueError。錯誤訊息已改進,以描述類型為何無效。 #2256

  • 新增 routes CLI 命令,以輸出在應用程式上註冊的路由。 #2259

  • 當 session cookie 網域是裸主機名稱或 IP 位址時顯示警告,因為這些在某些瀏覽器(例如 Chrome)中可能無法正常運作。 #2282

  • 允許 IP 位址作為精確的 session cookie 網域。 #2282

  • 如果透過 SERVER_NAME 偵測到,則會設定 SESSION_COOKIE_DOMAIN#2282

  • FLASK_APP 自動偵測名為 create_appmake_app 的零參數應用程式工廠。 #2297

  • 工廠函式不需要使用 script_info 參數即可與 flask 命令搭配使用。如果它們採用單一參數或名為 script_info 的參數,則會傳遞 ScriptInfo 物件。 #2319

  • 可以將 FLASK_APP 設定為應用程式工廠,如果需要可以帶參數,例如 FLASK_APP=myproject.app:create_app('dev')#2326

  • FLASK_APP 可以指向未以可編輯模式安裝的本地套件,儘管仍然建議使用 pip install -e#2414

  • View.as_view 中設定 View 類別屬性 View.provide_automatic_options,以供 Flask.add_url_rule 偵測。 #2316

  • 錯誤處理將嘗試為 blueprint, codeapp, codeblueprint, exceptionapp, exception 註冊的處理器。 #2314

  • 如果在請求期間存取了 session(且未刪除),則將 Cookie 新增至回應的 Vary 標頭。 #2288

  • Flask.test_request_context 接受 subdomainurl_scheme 參數,用於建構基礎 URL 時。 #1621

  • 預設將 APPLICATION_ROOT 設定為 '/'。當設定為 None 時,這已經是隱含的預設值。

  • 在除錯模式下,預設啟用 TRAP_BAD_REQUEST_ERRORSBadRequestKeyError 在除錯模式下具有包含錯誤鍵的訊息,而不是通用的不良請求訊息。 #2348

  • 允許使用 TaggedJSONSerializer 註冊新標籤,以支援在 session cookie 中儲存其他類型。 #2352

  • 僅在請求尚未推送到上下文堆疊時才開啟 session。這允許 stream_with_context 生成器存取包含視圖所使用的相同 session。 #2354

  • 為測試用戶端請求方法新增 json 關鍵字參數。這會將給定的物件傾印為 JSON,並設定適當的內容類型。 #2358

  • 將 JSON 處理提取到應用於 RequestResponse 類別的 mixin。這將 Response.is_jsonResponse.get_json 方法新增至回應,使測試 JSON 回應更加容易。 #2358

  • 移除錯誤處理器快取,因為它為某些例外繼承層次結構造成了意外的結果。如果想要避免遍歷 MRO,請為每個例外顯式註冊處理器。 #2362

  • 修復了對 aware, non-UTC datetime 進行不正確的 JSON 編碼。 #2374

  • 即使已存取 Flask.jinja_env,模板自動重新載入也會遵循除錯模式。 #2373

  • 以下舊的已棄用程式碼已被移除。 #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 屬性不再被棄用。 #1421

  • 支援將 EnvironBuilderdict 傳遞至 test_client.open#2412

  • flask 命令和 Flask.run 將從 .env.flaskenv 檔案載入環境變數(如果已安裝 python-dotenv)。 #2416

  • 當將完整 URL 傳遞至測試用戶端時,將使用 URL 中的 scheme,而不是 PREFERRED_URL_SCHEME#2430

  • Flask.logger 已簡化。LOGGER_NAMELOGGER_HANDLER_POLICY 設定已移除。logger 始終命名為 flask.app。級別僅在首次存取時設定,它不會每次都檢查 Flask.debug。僅使用一種格式,而不是根據 Flask.debug 使用不同的格式。不會移除任何處理器,並且僅在尚未配置任何處理器時才新增處理器。 #2436

  • Blueprint 視圖函式名稱不得包含點。 #2450

  • 修復了在某些情況下由無效 Range 請求引起的 ValueError#2526

  • 開發伺服器預設使用執行緒。 #2529

  • 使用 silent=True 載入設定檔將忽略 ENOTDIR 錯誤。 #2581

  • --cert--key 選項傳遞至 flask run,以透過 HTTPS 執行開發伺服器。 #2606

  • 新增 SESSION_COOKIE_SAMESITE 以控制 session cookie 上的 SameSite 屬性。 #2607

  • 新增 Flask.test_cli_runner 以建立 Click runner,該 runner 可以調用 Flask CLI 命令進行測試。 #2636

  • 子網域匹配預設為停用,並且設定 SERVER_NAME 不會隱式啟用它。可以透過將 subdomain_matching=True 傳遞至 Flask 建構子來啟用它。 #2635

  • 當 blueprint url_prefix 在應用程式中註冊時,會從中剝離單個尾部斜線。 #2629

  • silent 為 true 時,如果解析失敗,Request.get_json 不會快取結果。 #2651

  • Request.get_json 不再接受任意編碼。根據 RFC 8259,傳入的 JSON 應使用 UTF-8 編碼,但 Flask 將自動偵測 UTF-8、-16 或 -32。 #2691

  • 新增 MAX_COOKIE_SIZEResponse.max_cookie_size,以控制 Werkzeug 何時警告瀏覽器可能會忽略的大型 cookies。 #2693

  • 更新了文件主題,使文件在小視窗中看起來更好。 #2709

  • 重寫了教學文件和範例專案,採用更結構化的方法,以幫助新用戶避免常見的陷阱。 #2676

版本 0.12.5

發布於 2020-02-10

  • 將 Werkzeug 鎖定為 < 1.0.0。 #3497

版本 0.12.4

發布於 2018-04-29

  • 重新封裝 0.12.3 以修復套件佈局問題。 #2728

版本 0.12.3

發布於 2018-04-26

  • Request.get_json 不再接受任意編碼。根據 RFC 8259,傳入的 JSON 應使用 UTF-8 編碼,但 Flask 將自動偵測 UTF-8、-16 或 -32。 #2692

  • 修復了使用 python -m flask 時關於匯入的 Python 警告。 #2666

  • 修復了在某些情況下由無效 Range 請求引起的 ValueError

版本 0.12.2

發布於 2017-05-16

  • 修復了 Windows 上 safe_join 中的錯誤。

版本 0.12.1

發布於 2017-03-31

  • 防止在匯入的應用程式模組內發生 ImportError 時,flask run 顯示 NoAppException

  • 修復了 Python 3 的 app.config.from_pyfile 的編碼行為。 #2118

  • 如果 SERVER_NAME 設定存在,則將其用作 app.run 的預設值。 #2109, #2152

  • 在請求處理器中引發 BaseException(例如 KeyboardInterrupt)的情況下,使用例外物件而不是 None 呼叫 ctx.auto_pop

版本 0.12

發布於 2016-12-21,代號 Punsch

  • cli 命令現在回應 --version

  • 已移除 send_file 中類檔案物件的 Mimetype 猜測和 ETag 生成。 #104, :pr`1849`

  • send_file 中的 Mimetype 猜測現在會明確失敗,並且不會回退到 application/octet-stream#1988

  • 使 flask.safe_join 能夠像 os.path.join 一樣連接多個路徑 #1730

  • 還原行為變更,該變更使開發伺服器崩潰而不是返回內部伺服器錯誤。 #2006

  • 正確調用常規請求分派以及錯誤處理器的回應處理器。

  • 預設停用應用程式 logger 的 logger 傳播。

  • send_file 中新增對 range 請求的支援。

  • app.test_client 包含預設預設環境,現在可以直接設定,而不是每個 client.get 設定。

  • 修復了在 PyPy3 下執行時崩潰的問題。 #1814

版本 0.11.1

發布於 2016-06-07

  • 修復了阻止 FLASK_APP=foobar/__init__.py 運作的錯誤。 #1872

版本 0.11

發布於 2016-05-29,代號 Absinthe

  • 新增了對將頂層陣列序列化為 jsonify 的支援。這在古老的瀏覽器中引入了安全風險。

  • 新增 before_render_template 信號。

  • Flask.test_client 中新增 **kwargs,以支援將額外的關鍵字參數傳遞至 Flask.test_client_class 的建構子。

  • 新增 SESSION_REFRESH_EACH_REQUEST 設定鍵,用於控制 set-cookie 行為。如果設定為 True,則永久 session 將在每次請求時刷新並延長其生命週期;如果設定為 False,則僅在 session 實際修改時才會修改。非永久 session 不受此影響,並且始終會在瀏覽器視窗關閉時過期。

  • 使 Flask 支援用於傳入資料的自訂 JSON mimetypes。

  • 新增了對從視圖函式返回 (response, headers) 形式的元組的支援。

  • 新增 Config.from_json

  • 新增 Flask.config_class

  • 新增 Config.get_namespace

  • 模板不再在除錯模式外自動重新載入。可以使用新的 TEMPLATES_AUTO_RELOAD 設定鍵來配置此行為。

  • 為 Python 3.3 的命名空間載入器中的限制新增了變通方法。

  • 在使用 Python 3.3 的命名空間套件時,新增了對顯式根路徑的支援。

  • 新增 flaskflask.cli 模組,以透過 click CLI 系統啟動本地除錯伺服器。建議使用此方法來代替舊的 flask.run() 方法,因為它由於不同的設計而工作更快且更可靠,並且還取代了 Flask-Script

  • 現在首先檢查與特定類別匹配的錯誤處理器,從而允許捕獲 HTTP 例外(在 werkzeug.exceptions 中)的子類別。這使擴充套件作者可以建立預設會導致他們選擇的 HTTP 錯誤的例外,但如果需要,可以使用自訂錯誤處理器捕獲。

  • 新增 Config.from_mapping

  • 即使停用了除錯模式,Flask 現在也會預設記錄日誌。日誌格式現在是硬編碼的,但可以透過 LOGGER_HANDLER_POLICY 設定鍵停用預設日誌處理。

  • 移除了已棄用的模組功能。

  • 新增了 EXPLAIN_TEMPLATE_LOADING 設定標誌,啟用後,它將指示 Flask 解釋它如何定位模板。這應有助於用戶在載入錯誤的模板時進行除錯。

  • 強制執行 blueprint 處理,按照它們註冊的順序載入模板。

  • 將測試套件移植到 py.test。

  • 棄用 request.json,改用 request.get_json()

  • 在 jsonify() 方法中新增 “pretty” 和 “compressed” 分隔符號定義。當 JSONIFY_PRETTYPRINT_REGULAR=False 時,通過移除預設在分隔符號後包含的不必要的空格來減小 JSON 回應大小。

  • JSON 回應現在以換行字元終止,因為這是 UNIX 文字檔案以換行符結尾的慣例,並且某些用戶端在缺少此換行符時無法很好地處理。 #1262

  • 如果用戶註冊了使用小寫版本 options 的覆寫規則,則現在可以正確停用自動提供的 OPTIONS 方法。 #1288

  • flask.json.jsonify 現在支援 datetime.date 類型。 #1326

  • 不要將已捕獲例外的例外資訊洩漏到上下文拆解處理器。 #1393

  • 允許自訂 Jinja 環境子類別。 #1422

  • 更新了擴充套件開發指南。

  • flask.g 現在具有 pop()setdefault 方法。

  • 預設為 flask.templating.render_template_string 開啟 autoescape。 #1515

  • flask.ext 現在已棄用。 #1484

  • 如果伺服器 OS 上的檔案名稱無效,則 send_from_directory 現在會引發 BadRequest。 #1763

  • 新增了 JSONIFY_MIMETYPE 設定變數。 #1728

  • 拆解處理期間的例外將不再留下不良的應用程式上下文持續存在。

  • 修復了損壞的 test_appcontext_signals() 測試案例。

  • helpers.find_package 中引發 AttributeError,並提供有用的訊息,說明當 PEP 302 匯入 hook 在沒有 is_package() 方法的情況下使用時,為何會引發該錯誤。

  • 修復了導致在進入請求或應用程式上下文之前引發的例外被傳遞到拆解處理器的問題。

  • 修復了當請求絕對 URL 時,查詢參數從測試用戶端中的請求中移除的問題。

  • @before_first_request 變成預期的裝飾器。

  • 修復了在傳送帶有名稱的檔案流時的 etags 錯誤。

  • 修復了 send_from_directory 未正確擴展到應用程式根路徑的問題。

  • 更改了首次請求處理器之前的邏輯,以在調用後翻轉標誌。這將允許一些可能危險但可能應該允許的用途。

  • 修復了當 app.url_build_error_handlers 中的處理器重新引發 BuildError 時的 Python 3 錯誤。

版本 0.10.1

發布於 2013-06-14

  • 修正了 |tojson 過濾器在 HTML 屬性中,不會將單引號加上引號的問題,這會導致過濾器無法正常運作。現在可以在單引號屬性中使用該過濾器了。這應該能讓搭配 angular.js 使用該過濾器更加容易。

  • 新增了對位元組字串回溯支援到 session 系統。這破壞了與常見情況的相容性,即人們將二進制資料放入 session 中進行權杖驗證。

  • 修正了針對相同端點重複註冊相同方法兩次,會錯誤地觸發例外狀況的問題。

版本 0.10

發布於 2013-06-13,代號 Limoncello

  • 將預設 Cookie 序列化格式從 pickle 變更為 JSON,以限制密鑰洩漏時攻擊者可能造成的影響。

  • 除了已存在的 template_filter 方法系列之外,還新增了 template_test 方法。

  • 除了已存在的 template_filter 方法系列之外,還新增了 template_global 方法。

  • 為 x-sendfile 設定 content-length 標頭。

  • tojson 過濾器現在不會跳脫 HTML5 解析器中的 script 區塊。

  • 在模板中使用的 tojson 現在預設是安全的。這是因為不同的跳脫行為而被允許。

  • 如果您嘗試在已使用的端點上註冊新函式,Flask 現在會引發錯誤。

  • 在 simplejson 周圍新增了包裝模組,並新增了 datetime 物件的預設序列化。這允許更輕鬆地自訂 Flask 或任何 Flask 擴充功能處理 JSON 的方式。

  • 移除已棄用的內部 flask.session 模組別名。請改用 flask.sessions 以取得 session 模組。這不應與 session 代理 flask.session 混淆。

  • 現在可以在沒有請求上下文的情況下呈現模板。行為略有不同,因為 requestsessiong 物件將不可用,並且不會呼叫藍圖的上下文處理器。

  • config 物件現在作為真正的全域變數提供給模板,而不是通過上下文處理器,這使其即使在預設情況下導入的模板中也可用。

  • 新增了一個選項來產生非 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 以來,這是一個更適合其功能的名稱。

  • requestsessiong 現在也作為代理新增到模板上下文中,這使得它們在導入的模板中可用。但是,必須非常小心這些物件,因為在巨集之外使用可能會導致快取。

  • 如果傳遞代理例外狀況,Flask 將不再調用錯誤的錯誤處理程式。

  • 為 chrome 在 localhost 中使用網域名稱時 Cookie 無法按預期運作的問題新增了變通方法。

  • 變更了從 session 中選取 Cookie 值的預設邏輯,以便更好地與 Google Chrome 搭配使用。

  • 新增了 message_flashed 信號,簡化了閃爍訊息的測試。

  • 新增了複製請求上下文的支援,以便更好地與 greenlets 搭配使用。

  • 移除自訂 JSON HTTP 例外狀況子類別。如果您依賴它們,您可以輕鬆地再次重新引入它們。但是,強烈建議不要使用它們,因為介面存在缺陷。

  • Python 需求已變更:現在需要 Python 2.6 或 2.7,以便為 Python 3.3 移植做準備。

  • 變更了如何將例外狀況通知 teardown 系統的方式。如果在錯誤處理過程中途處理了例外狀況,現在這樣做會更可靠。

  • 偵錯模式下的請求上下文保留現在會保留例外狀況資訊,這表示 teardown 處理程式能夠區分錯誤和成功案例。

  • 新增了 JSONIFY_PRETTYPRINT_REGULAR 組態變數。

  • Flask 現在預設會排序 JSON 鍵,以避免因不同工作程序之間的不同雜湊種子而破壞 HTTP 快取。

  • 新增了 appcontext_pushedappcontext_popped 信號。

  • 內建的 run 方法現在在選取要運作的預設連接埠時,會將 SERVER_NAME 納入考量。

  • 新增了 flask.request.get_json(),以取代舊的 flask.request.json 屬性。

版本 0.9

發布於 2012-07-01,代號 Campari

  • Request.on_json_loading_failed 現在預設傳回 JSON 格式的回應。

  • url_for 函式現在可以為產生的連結產生錨點。

  • url_for 函式現在也可以明確地產生特定於給定 HTTP 方法的 URL 規則。

  • 記錄器現在僅在未明確設定時才傳回偵錯記錄設定。

  • 在關閉請求時,取消註冊 WSGI 環境與請求物件之間的循環相依性。這表示在將回應傳回 WSGI 伺服器後,環境變數 werkzeug.request 將為 None,但其優點是 CPython 上不需要垃圾收集器來關閉請求,除非使用者自己建立了循環相依性。

  • Session 現在在回呼之後儲存,以便如果 session 酬載儲存在 session 中,您仍然可以在請求後回呼中修改它。

  • Flask 類別將避免匯入提供的匯入名稱(所需的第一個參數),以使程式化建置 Flask 實例的工具受益。Flask 類別將在具有自訂模組掛鉤的系統(例如 Google App Engine)上,或當匯入名稱位於 Python 2.7 之前的 zip 檔案(通常是 egg)內時,退回到使用匯入。

  • 藍圖現在有一個裝飾器,可以全應用程式範圍新增自訂模板過濾器 Blueprint.app_template_filter

  • Flask 和藍圖類別現在有一個非裝飾器方法,可以全應用程式範圍新增自訂模板過濾器 Flask.add_template_filterBlueprint.add_app_template_filter

  • get_flashed_messages 函式現在允許通過 category_filter 參數,在單獨的區塊中呈現閃爍訊息類別。

  • Flask.run 方法現在接受 hostport 參數的 None,在 None 時使用預設值。這允許使用組態值呼叫 run,例如 app.run(app.config.get('MYHOST'), app.config.get('MYPORT')),無論是否提供組態檔案,都具有正確的行為。

  • render_template 方法現在接受模板名稱的可迭代物件或單個模板名稱。先前,它僅接受單個模板名稱。在可迭代物件上,將呈現找到的第一個模板。

  • 新增了 Flask.app_context,其運作方式與請求上下文非常相似,但僅提供對當前應用程式的存取權。這也增加了在沒有活動請求上下文的情況下產生 URL 的支援。

  • 視圖函式現在可以傳回一個元組,其中第一個實例是 Response 的實例。這允許從視圖函式傳回 jsonify(error="error msg"), 400

  • FlaskBlueprint 現在提供 get_send_file_max_age 掛鉤,供子類別覆寫在使用 Flask.send_static_file(用於預設靜態檔案處理程式)和 helpers.send_file 時,從 Flask 服務靜態檔案的行為。此掛鉤提供了一個檔案名稱,例如允許通過檔案擴展名更改快取控制。可以使用新的 SEND_FILE_MAX_AGE_DEFAULT 組態變數配置 send_file 和靜態檔案的預設最大期限,該變數在預設 get_send_file_max_age 實作中使用。

  • 修正了 session 實作中的一個假設,該假設可能會破壞在使用外部儲存的 session 實作中的訊息閃爍。

  • 變更了函式中元組傳回值的行為。它們不再是回應物件的參數,它們現在具有明確的含義。

  • 新增了 Flask.request_globals_class,允許在建立每個請求的 g 實例時使用特定的類別。

  • 為視圖函式新增了 required_methods 屬性,以強制在註冊時新增方法。

  • 新增了 flask.after_this_request

  • 新增了 flask.stream_with_context 以及多次推送上下文而不會產生意外行為的功能。

版本 0.8.1

發布於 2012-07-01

  • 修正了未記錄的 flask.session 模組在 Python 2.5 上無法正常運作的問題。它不應使用,但確實為套件管理器造成了一些問題。

版本 0.8

發布於 2011-09-29,代號 Rakija

  • 將 session 支援重構為 session 介面,以便可以變更 session 的實作,而無需覆寫 Flask 類別。

  • 現在可以自動正確刪除空的 session Cookie。

  • 視圖函式現在可以選擇不取得自動 OPTIONS 實作。

  • 現在可以捕獲 HTTP 例外狀況和錯誤請求錯誤,以便它們正常顯示在追蹤回溯中。

  • 偵錯模式下的 Flask 現在可以偵測到一些常見問題,並嘗試警告您。

  • 如果在處理第一個請求後附加了視圖,偵錯模式下的 Flask 現在將使用斷言錯誤來抱怨。當使用者忘記提前匯入視圖程式碼時,這會提供更早的回饋。

  • 新增了註冊回呼的功能,這些回呼僅在第一個請求開始時觸發一次,使用 Flask.before_first_request

  • 格式錯誤的 JSON 資料現在將觸發錯誤請求 HTTP 例外狀況,而不是通常會導致 500 內部伺服器錯誤(如果未處理)的值錯誤。這是一個向後不相容的變更。

  • 應用程式現在不僅具有資源和模組所在的根路徑,而且還具有實例路徑,這是放置在執行階段修改的檔案(上傳等)的指定位置。此外,這在概念上僅取決於實例並且在版本控制之外,因此它是放置組態檔案等的理想位置。

  • 新增了 APPLICATION_ROOT 組態變數。

  • 實作了 TestClient.session_transaction,以便從測試環境輕鬆修改 session。

  • 在內部重構了測試客戶端。APPLICATION_ROOT 組態變數以及 SERVER_NAME 現在已由測試客戶端正確用作預設值。

  • 新增了 View.decorators,以支援更簡化的可插拔(基於類別的)視圖裝飾。

  • 修正了與 “with” 語句一起使用時,測試客戶端未觸發 teardown 處理程式執行的問題。

  • 新增了對 session Cookie 參數的更精細控制。

  • 如果未實作處理程式,則對方法視圖的 HEAD 請求現在會自動分派到 get 方法。

  • 實作了虛擬 flask.ext 套件以從中匯入擴充功能。

  • 例外狀況的上下文保留現在是 Flask 本身的一個組成部分,而不再是測試客戶端的一部分。這清理了一些內部邏輯,並降低了單元測試中失控請求上下文的機率。

  • 修正了涉及藍圖或模組時,Jinja2 環境的 list_templates 方法未傳回正確名稱的問題。

版本 0.7.2

發布於 2011-07-06

  • 修正了 URL 處理器在藍圖上無法正常運作的問題。

版本 0.7.1

發布於 2011-06-29

  • 新增了遺失的 future 匯入,該匯入破壞了 2.5 相容性。

  • 修正了藍圖的無限重新導向問題。

版本 0.7

發布於 2011-06-28,代號 Grappa

  • 新增了 Flask.make_default_options_response,子類別可以使用它來變更 OPTIONS 回應的預設行為。

  • 未綁定的局部變數現在會引發正確的 RuntimeError,而不是 AttributeError

  • 基於檔案物件的 mimetype 猜測和 etag 支援現在已棄用 send_file,因為它不可靠。請改為傳遞檔案名稱,或附加您自己的 etag 並手動提供正確的 mimetype。

  • 模組的靜態檔案處理現在需要明確提供靜態資料夾的名稱。先前的自動偵測不可靠,並在 Google 的 App Engine 上造成問題。在 1.0 之前,舊的行為將繼續運作,但會發出依賴性警告。

  • 修正了 Flask 在 jython 上運作的問題。

  • 新增了 PROPAGATE_EXCEPTIONS 組態變數,可用於翻轉例外狀況傳播的設定,該設定先前僅連結到 DEBUG,現在連結到 DEBUGTESTING

  • Flask 不再內部依賴於通過 add_url_rule 函式新增的規則,現在也可以接受新增到 URL 對應的常規 werkzeug 規則。

  • 為 flask 應用程式物件新增了 endpoint 方法,該方法允許使用裝飾器將回呼註冊到任意端點。

  • 對靜態檔案傳送使用 Last-Modified,而不是 0.6 中錯誤引入的 Date。

  • 新增了 create_jinja_loader 以覆寫載入器建立過程。

  • config.from_pyfile 實作了靜默標誌。

  • 新增了 teardown_request 裝飾器,用於應在請求結束時執行的函式,無論是否發生例外狀況。after_request 的行為也已變更。現在,當引發例外狀況時,不再執行它。

  • 實作了 has_request_context

  • 棄用了 init_jinja_globals。請改為覆寫 Flask.create_jinja_environment 方法以實現相同的功能。

  • 新增了 safe_join

  • 自動 JSON 請求資料解壓縮現在會查看 charset mimetype 參數。

  • 如果 session 中沒有訊息,則不要在 get_flashed_messages 上修改 session。

  • before_request 處理程式現在能夠使用錯誤中止請求。

  • 無法定義使用者例外狀況處理程式。這樣,您可以為請求處理期間可能發生的某些錯誤(例如資料庫連線錯誤、來自遠端資源的逾時等)從中央樞紐提供自訂錯誤訊息。

  • 藍圖可以提供藍圖特定的錯誤處理程式。

  • 實作了通用基於類別的視圖。

版本 0.6.1

發布於 2010-12-31

  • 修正了預設 OPTIONS 回應未在 Allow 標頭中公開所有有效方法的問題。

  • Jinja2 模板載入語法現在允許在模板載入路徑前面加上 “./”。先前,這導致了模組設定的問題。

  • 修正了模組的子網域設定被靜態資料夾忽略的問題。

  • 修正了一個安全問題,如果主機伺服器是基於 Windows 的作業系統,並且客戶端使用反斜線來跳脫檔案公開的目錄,則該問題允許客戶端下載任意檔案。

版本 0.6

發布於 2010-07-27,代號 Whisky

  • 請求後函式現在以註冊的相反順序呼叫。

  • 除非應用程式明確將 ‘OPTIONS’ 作為方法新增到 URL 規則,否則 Flask 現在會自動實作 OPTIONS。在這種情況下,不會啟動自動 OPTIONS 處理。

  • 即使模組沒有靜態資料夾,靜態規則現在也已到位。實作此功能是為了協助 GAE,如果靜態資料夾是 .yml 檔案中對應的一部分,則 GAE 將會移除該靜態資料夾。

  • Flask.config 現在在模板中以 config 的形式提供。

  • 上下文處理器將不再覆寫直接傳遞給呈現函式的值。

  • 新增了使用新的 MAX_CONTENT_LENGTH 組態值限制傳入請求資料的功能。

  • Module.add_url_rule 方法的端點現在是可選的,以便與應用程式物件上同名函式保持一致。

  • 新增了 make_response 函式,簡化了在視圖中建立回應物件實例。

  • 新增了基於 blinker 的信號支援。此功能目前是可選的,應供擴充功能和應用程式使用。如果您想使用它,請確保已安裝 blinker

  • 重構了 URL 適配器的建立方式。此過程現在可以使用 Flask.create_url_adapter 方法完全自訂。

  • 模組現在可以註冊子網域,而不僅僅是 URL 首碼。這使得將整個模組綁定到可組態的子網域成為可能。

版本 0.5.2

發布於 2010-07-15

  • 修正了使用模組時從目錄載入模板的另一個問題。

版本 0.5.1

發布於 2010-07-06

  • 修正了使用模組時從目錄載入模板的問題。

版本 0.5

發布於 2010-07-06,代號 Calvados

  • 修正了由無法指定伺服器名稱引起的子網域錯誤。現在可以使用 SERVER_NAME 組態鍵設定伺服器名稱。此鍵現在也用於設定跨子網域的 session Cookie。

  • 自動跳脫不再對所有模板都有效。相反,它僅對 .html.htm.xml.xhtml 有效。在模板內部,可以使用 autoescape 標籤變更此行為。

  • 在內部重構了 Flask。它現在由多個檔案組成,而不只是一個檔案。

  • send_file 現在發出 etag,並且具有內建條件回應的功能。

  • (暫時)取消了對壓縮應用程式的支援。這是一個很少使用的功能,並導致了一些令人困惑的行為。

  • 新增了對每個套件模板和靜態檔案目錄的支援。

  • 移除了對 create_jinja_loader 的支援,由於改進的模組支援,0.5 中不再使用該功能。

  • 新增了一個輔助函式,用於公開任何目錄中的檔案。

版本 0.4

發布於 2010-06-18,代號 Rakia

  • 新增了從模組註冊應用程式範圍錯誤處理程式的功能。

  • 如果請求因例外狀況而終止並且啟動錯誤處理頁面,則也會調用 Flask.after_request 處理程式。

  • 測試客戶端不具有將請求上下文保留更長時間的功能。這也可以用於觸發自訂請求,這些請求不會彈出請求堆疊以進行測試。

  • 由於 Python 標準程式庫快取記錄器,因此現在可以組態記錄器的名稱,以便更好地支援單元測試。

  • 新增了 TESTING 開關,可以啟動單元測試輔助程式。

  • 如果啟用了偵錯,記錄器現在會切換到 DEBUG 模式。

版本 0.3.1

發布於 2010-05-28

  • 修正了 Config.from_envvar 的錯誤報告錯誤。

  • 移除了一些未使用的程式碼。

  • 版本不再包含開發剩餘檔案(用於主題的 .git 資料夾、zip 和 pdf 檔案中內建的文件以及一些 .pyc 檔案)

版本 0.3

發布於 2010-05-28,代號 Schnaps

  • 新增了對閃爍訊息類別的支援。

  • 應用程式現在組態了 logging.Handler,並且在非偵錯模式下,會將請求處理例外狀況記錄到該記錄器。這使得可以接收有關伺服器錯誤的郵件,例如。

  • 新增了對上下文綁定的支援,該綁定不需要使用 with 語句即可在控制台中播放。

  • 請求上下文現在在 with 語句中可用,使其可以進一步推送請求上下文或彈出它。

  • 新增了對組態的支援。

版本 0.2

發布於 2010-05-12,代號 J?germeister

  • 各種錯誤修正

  • 整合了 JSON 支援

  • 新增了 get_template_attribute 輔助函式。

  • Flask.add_url_rule 現在也可以註冊視圖函式。

  • 重構了內部請求分派。

  • 伺服器現在預設在 127.0.0.1 上監聽,以修正 chrome 的問題。

  • 新增了外部 URL 支援。

  • 新增了對 send_file 的支援。

  • 模組支援和內部請求處理重構,以更好地支援可插拔應用程式。

  • 現在可以基於每個 session 將 session 設定為永久性。

  • 更好地報告遺失的密鑰的錯誤。

  • 新增了對 Google Appengine 的支援。

版本 0.1

發布於 2010-04-16

  • 首次公開預覽版本。