<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ### 導航 - [索引](# "總目錄") - [下一頁](# "步驟 5: 視圖函數") | - [上一頁](# "步驟 3: 創建數據庫") | - [Flask 0.10.1 文檔](#) ? - [教程](#) ? # 步驟 4: 請求數據庫連接 現在我們知道如何在建立數據庫連接并且如何執行腳本,但是我們如何能優雅的在請求中這么做?所有的函數都需要數據庫連接,所以在請求之前初始化,在請求結束后自動關閉就很有意義。 Flask 允許我們用 [before_request()](# "flask.Flask.before_request") 、[after_request()](# "flask.Flask.after_request") 和 [teardown_request()](# "flask.Flask.teardown_request")裝飾器來實現這個功能: ~~~ @app.before_request def before_request(): g.db = connect_db() @app.teardown_request def teardown_request(exception): g.db.close() ~~~ 用 [before_request()](# "flask.Flask.before_request") 裝飾的函數會在請求前調用,它沒有參數。用 [after_request()](# "flask.Flask.after_request") 裝飾的函數在請求結束后調用,需要傳入響應。它們必須返回那個響應對象或是不同的響應對象。但當異常拋出時,它們不一定會被執行,這時可以使用 [teardown_request()](# "flask.Flask.teardown_request") 裝飾器,它裝飾的函數將在響應構造后執行,并不允許修改請求,返回的值會被忽略。如果在請求已經被處理的時候拋出異常,它會被傳遞到每個函數,否則會傳入一個 None 。 我們把當前的數據庫連接保存在 Flask 提供的 [g](# "flask.g") 特殊對象中。這個對象只能保存一次請求的信息,并且在每個函數里都可用。不要用其它對象來保存信息,因為在多線程環境下將不可行。特殊的對象 [g](# "flask.g") 在后臺有一些神奇的機制來保證它在做正確的事情。 繼續 [*步驟 5: 視圖函數*](#) 。 提示 我該把代碼放在哪? 如果你一直遵循教程,你應該會問從這步到以后的步驟,代碼放在什么地方。邏輯上應該按照模塊來組織函數,即把你新的 before_request 和 teardown_request裝飾的函數放在之前的 init_db 函數下面(逐行遵照教程)。 如果你需要一個時刻來找到你的方位,看一下 [示例源碼](http://github.com/mitsuhiko/flask/tree/master/examples/flaskr/) [http://github.com/mitsuhiko/flask/tree/master/examples/flaskr/] 是怎么組織的。在Flask 中,你可以把你應用所有的代碼放在一個 Python 模塊里。但你無需這么做,并且在你的應用 [*規模擴大*](#) 的時候,這顯然不妥。 ? 版權所有 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>

                              哎呀哎呀视频在线观看