Hello World 開始
本節(jié)主要內(nèi)容:使用Flask寫一個(gè)顯示 "Hello World!"的web程序,如何配置、調(diào)試Flask。
創(chuàng)建項(xiàng)目
我們手動(dòng)創(chuàng)建文件夾和文件結(jié)構(gòu)如下:
py/
? ├ static/ # static用來存放靜態(tài)資源,例如圖片、js、css文件等
? ├ templates/ # templates存放模板文件
? ├ server.py
我們的網(wǎng)站邏輯基本在server.py文件中,當(dāng)然,也可以給這個(gè)文件起個(gè)其他的名字。
在server.py中加入以下內(nèi)容:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
? ? return 'Hello World!'
if __name__ == '__main__':
? ? app.run()
運(yùn)行server.py:
python3 server.py
* Running on http://127.0.0.1:5000/

打開瀏覽器訪問http://127.0.0.1:5000/

代碼解析
變量app是一個(gè)Flask實(shí)例,通過下面的方式:
@app.route('/')
def hello_world():
? ? return 'Hello World!'
當(dāng)客戶端訪問/時(shí),將響應(yīng)hello_world()函數(shù)返回的內(nèi)容。注意,這不是返回Hello World!這么簡(jiǎn)單,Hello World!只是HTTP響應(yīng)報(bào)文的實(shí)體部分,狀態(tài)碼等信息既可以由Flask自動(dòng)處理,當(dāng)然也可以通過編程來制定。
修改Flask的配置
app = Flask(__name__)
上面的代碼中,python內(nèi)置變量__name__的值是字符串__main__ 。Flask類將這個(gè)參數(shù)作為程序名稱。當(dāng)然這個(gè)是可以自定義的,比如:
app = Flask("myapp")
Flask默認(rèn)使用static目錄存放靜態(tài)資源,templates目錄存放模板,也可以通過設(shè)置參數(shù)更改:
app = Flask("myapp", static_folder="path1", template_folder="path2")
以上我們指定靜態(tài)資源目錄為path1, 模板目錄為 path2。
更多參數(shù)請(qǐng)參考__doc__:
from flask import Flask
print(Flask.__doc__)
調(diào)試模式
上面的server.py中以app.run()方式運(yùn)行,這種方式下,如果服務(wù)器端出現(xiàn)錯(cuò)誤是不會(huì)在客戶端顯示的。但是在開發(fā)環(huán)境中,顯示錯(cuò)誤信息是很有必要的,要顯示錯(cuò)誤信息,應(yīng)該以下面的方式運(yùn)行Flask:
app.run(debug=True)
將debug設(shè)置為True的另一個(gè)好處是,程序啟動(dòng)后,會(huì)自動(dòng)檢測(cè)源碼是否發(fā)生變化,若有變化則自動(dòng)重啟程序。這可以幫我們省下很多時(shí)間。
還可以使用這種途徑開啟調(diào)試模式:
app.debug = True
app.run()
綁定IP和端口
默認(rèn)情況下,F(xiàn)lask綁定IP為127.0.0.1,端口為5000。也可以通過下面的方式自定義:
app.run(host='0.0.0.0', port=8080, debug=True)
0.0.0.0代表電腦所有的IP。以上我們綁定了8080端口, 啟動(dòng)服務(wù)后我們?cè)L問的網(wǎng)址將是: http://127.0.0.1:8080/