在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ 在 Shell 中使用 Flask
應(yīng)用環(huán)境
配置管理
大型應(yīng)用
可插撥視圖
Flask 方案
在 Shell 中使用 Flask
針對(duì)高級(jí)程序員的前言
使用藍(lán)圖的模塊化應(yīng)用
部署方式
信號(hào)
排除應(yīng)用錯(cuò)誤
模板
請(qǐng)求環(huán)境
掌握應(yīng)用錯(cuò)誤
測(cè)試 Flask 應(yīng)用
前言
教程
安裝
快速上手
Flask 擴(kuò)展

在 Shell 中使用 Flask

New in version 0.3.

喜歡 Python 的原因之一是交互式的 shell ,它可以讓你實(shí)時(shí)運(yùn)行 Python 命令,并且立即得到結(jié)果。 Flask 本身不帶交互 shell ,因?yàn)樗恍枰囟ǖ那捌谠O(shè)置,只要在 shell 中導(dǎo)入你的應(yīng)用就可以開(kāi)始使用了。

有些輔助工具可以讓你在 shell 中更舒服。在交互終端中最大的問(wèn)題是你不會(huì)像瀏覽器一樣觸發(fā)一個(gè)請(qǐng)求,這就意味著無(wú)法使用 g 和 request 等對(duì)象。那么如何在 shell 中測(cè)試依賴這些對(duì)象的代碼呢?

這里有一些有用的輔助函數(shù)。請(qǐng)記住,這些輔助函數(shù)不僅僅只能用于 shell ,還可以用于單元測(cè)試和其他需要假冒請(qǐng)求環(huán)境的情況下。

在讀下去之前最好你已經(jīng)讀過(guò)請(qǐng)求環(huán)境一節(jié)。

創(chuàng)建一個(gè)請(qǐng)求環(huán)境

在 shell 中創(chuàng)建一個(gè)正確的請(qǐng)求環(huán)境的最簡(jiǎn)便的方法是使用 test_request_context 方法。這個(gè)方法會(huì)創(chuàng)建一個(gè) RequestContext

>>> ctx = app.test_request_context()

通常你會(huì)使用 with 語(yǔ)句來(lái)激活請(qǐng)求對(duì)象,但是在 shell 中,可以簡(jiǎn)便地手動(dòng)使用 push() 和 pop() 方法:

>>> ctx.push()

從這里開(kāi)始,直到調(diào)用 pop 之前,你可以使用請(qǐng)求對(duì)象:

>>> ctx.pop()

發(fā)送請(qǐng)求前/后動(dòng)作

僅僅創(chuàng)建一個(gè)請(qǐng)求環(huán)境還是不夠的,需要在請(qǐng)求前運(yùn)行的代碼還是沒(méi)有運(yùn)行。比如,在請(qǐng)求前可以會(huì)需要轉(zhuǎn)接數(shù)據(jù)庫(kù),或者把用戶信息儲(chǔ)存在 g 對(duì)象中。

使用 preprocess_request() 可以方便地模擬請(qǐng)求前/后動(dòng)作:

>>> ctx = app.test_request_context()
>>> ctx.push()
>>> app.preprocess_request()

請(qǐng)記住, preprocess_request() 函數(shù)可以會(huì)返回一個(gè)響應(yīng)對(duì)象。 如果返回的話請(qǐng)忽略它。

如果要關(guān)閉一個(gè)請(qǐng)求,那么你需要在請(qǐng)求后函數(shù)(由 process_response() 觸發(fā))作用于響應(yīng)對(duì)象前關(guān)閉:

>>> app.process_response(app.response_class())
<Response 0 bytes [200 OK]>
>>> ctx.pop()

teardown_request() 函數(shù)會(huì)在環(huán)境彈出后自動(dòng)執(zhí)行。我們可以使用 這些函數(shù)來(lái)銷毀請(qǐng)求環(huán)境所需要使用的資源(如數(shù)據(jù)庫(kù)連接)。

在 Shell 中玩得更爽

如果你喜歡在 shell 中的感覺(jué),那么你可以創(chuàng)建一個(gè)導(dǎo)入有關(guān)東西的模塊,在模塊中還 可以定義一些輔助方法,如初始化數(shù)據(jù)庫(kù)或者刪除表等等。假設(shè)這個(gè)模塊名為 shelltools ,那么在開(kāi)始時(shí)你可以:

>>> from shelltools import *

? Copyright 2013, Armin Ronacher. Created using Sphinx.