<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國際加速解決方案。 廣告
                ### 導航 - [索引](# "總目錄") - [下一頁](# "Flask 代碼模式") | - [上一頁](# "Flask 擴展") | - [Flask 0.10.1 文檔](#) ? # 與 Shell 共舞 0.3 新版功能. Python 擁有的交互式 Shell 是人人都喜歡它的一個重要原因。交互式 Shell允許你實時的運行 Python 命令并且立即得到返回結果。Flask 本身并未內置一個交互式 Shell ,因為它并不需要任何前臺的特殊設置,僅僅導入您的應用然后開始探索和使用即可。 然而這里有一些易于獲得的助手,可以幫助您在 Shell 遨游時獲得更為愉悅的體驗。交互式控制臺回話的一個重要問題是,您并不是像在瀏覽器當中那樣激發一個請求,因此 [g](# "flask.g") 和 [request](# "flask.request")以及其他的一些函數不能使用。然而您想要測試的代碼也許依賴他們,那么讓我們瞧瞧該如何解決這個問題。 這就是該那些輔助函數登場的時候了。然而應當說明的是,這些函數并非僅僅為在交互式 Shell 里使用而編寫的,也可以用于單元測試或者其他需要一個虛假的請求上下文的情景。 一般來說,在閱讀本章節之前還是建議大家先閱讀 [*請求上下文*](#)相關章節。 ### 創建一個請求上下文 從 Shell 創建一個合適的上下文,最簡單的方法是使用[test_request_context](# "flask.Flask.test_request_context") 方法,此方法會創建一個 [RequestContext](# "flask.ctx.RequestContext") 對象: ~~~ >>> ctx = app.test_request_context() ~~~ 一般來說,您可以使用 with 聲明來激活這個請求對象,但是在終端中,調用 [push()](# "flask.ctx.RequestContext.push")方法和 [pop()](# "flask.ctx.RequestContext.pop") 方法會更簡單: ~~~ >>> ctx.push() ~~~ 從這里往后,您就可以使用這個請求對象直到您調用 pop方法為止: ~~~ >>> ctx.pop() ~~~ ### 激發請求發送前后的調用 僅僅創建一個請求上下文,您仍然不能運行請求發送前通常會運行的代碼。如果您在將連接數據庫的任務分配給發送請求前的函數調用,或者在當前用戶并沒有被儲存在 [g](# "flask.g") 對象里等等情況下,您可能無法訪問到數據庫。 您可以很容易的自己完成這件事,僅僅手動調用[preprocess_request()](# "flask.Flask.preprocess_request") 函數即可: ~~~ >>> ctx = app.test_request_context() >>> ctx.push() >>> app.preprocess_request() ~~~ 請注意, [preprocess_request()](# "flask.Flask.preprocess_request") 函數可能會返回一個響應對象。這時,忽略它就好了。 要關閉一個請求,您需要在請求后的調用函數(由 [process_response()](# "flask.Flask.process_response")函數激發)運行之前耍一些小小的把戲: ~~~ >>> app.process_response(app.response_class()) <Response 0 bytes [200 OK]> >>> ctx.pop() ~~~ 被注冊為 [teardown_request()](# "flask.Flask.teardown_request") 的函數將會在上下文環境出棧之后自動執行。所以這是用來銷毀請求上下文(如數據庫連接等)資源的最佳地點。 ### 進一步提升 Shell 使用體驗 如果您喜歡在 Shell 里實驗您的新點子,您可以創建一個包含你想要導入交互式回話中的東西的的模塊。在這里,您也可以定義更多的輔助方法用來完成一些常用的操作,例如初始化數據庫、刪除一個數據表等。 把他們放到一個模塊里(比如 shelltools 然后在 Shell 中導入它): ~~~ >>> from shelltools import * ~~~ ? 版權所有 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>

                              哎呀哎呀视频在线观看