<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### 導航 - [索引](# "總目錄") - [下一頁](# "添加 HTTP Method Overrides") | - [上一頁](# "數據流") | - [Flask 0.10.1 文檔](#) ? - [Flask 代碼模式](#) ? # 延遲請求回調 Flask 的設計原則中有一條是響應對象被創建并在一條可能的回調鏈中傳遞,而在這條回調鏈但中的任意一個回調,您都可以修改或者替換掉他們。當請求開始被處理時,還沒有響應對象,響應對象將在這一過程中,被某個視圖函數或者系統的其他組件按照實際需要來闖將。 但是,如果您想在響應過程的結尾修改響應對象,但是這是對象還不存在,那么會發生什么呢?一個常見的例子是您可能需要在 before-request 函數當中在響應對象上設定 Cookie 。 解決這一情況的一個常用方法是改變代碼的邏輯,將這一部分代碼遷移到after-request 回調中。然而有些時候這種遷移并不是一個非常容易的敬禮而且可能使代碼看起來非常糟糕。 一個可能的替代方法是將一些回調函數綁定到 [g](# "flask.g") 對象中。然后在請求結束的時候調用他們。使用這種方法,您可以從應用里的任何一個地方來指定代碼延遲執行。 ### 裝飾器 下面的裝飾器就是關鍵,它將一個函數注冊到 [g](# "flask.g") 對象上的一個函數列表中: ~~~ from flask import g def after_this_request(f): if not hasattr(g, 'after_request_callbacks'): g.after_request_callbacks = [] g.after_request_callbacks.append(f) return f ~~~ ### 調用延遲函數 現在您可以使用 after_this_request 裝飾器來將一個函數標記為在請求結束之后執行,但是我們仍然需要手動調用他們。為此,如下函數將被注冊為[after_request()](# "flask.Flask.after_request") 回調: ~~~ @app.after_request def call_after_request_callbacks(response): for callback in getattr(g, 'after_request_callbacks', ()): response = callback(response) return response ~~~ ### 一個實際應用的例子 現在我們可以在任何時間點將一個函數注冊為在某個特定請求結束后執行,例如您可以在 before-request 中將用戶當前語言的信息保存在 Cookie 中: ~~~ from flask import request @app.before_request def detect_user_language(): language = request.cookies.get('user_lang') if language is None: language = guess_language_from_request() @after_this_request def remember_language(response): response.set_cookie('user_lang', language) g.language = language ~~~ ? 版權所有 2013, Armin Ronacher.
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看