第一個(gè) Flask 應(yīng)用程序
前面的小節(jié)中我們已經(jīng)講解了 Web 框架,開(kāi)發(fā)環(huán)境搭建以及特別重要的裝飾器等等知識(shí)。那么從這節(jié)課開(kāi)始我們就要正式開(kāi)始 Flask 框架的學(xué)習(xí)了。
本節(jié)課我們會(huì)創(chuàng)建一個(gè)最簡(jiǎn)單的 Flask 程序,通過(guò)這個(gè)程序我們會(huì)了解到 Flask 框架的基本應(yīng)用。
Tips:本節(jié)課所有的代碼已經(jīng)上傳到 Github 可以點(diǎn)擊這里進(jìn)行下載。
1. 安裝 flask
Flask 是一個(gè) Web 框架,使用它首先需要安裝:
$ pip3 install flask
安裝完畢后,在 Python 的交互模式下,嘗試導(dǎo)入 Flask 模塊:
>>> import flask
如果 import 沒(méi)有報(bào)錯(cuò),表示安裝成功
2. 一個(gè)最小的 Flask 應(yīng)用
確定安裝成功后我們創(chuàng)建一個(gè) minimal.py
文件,并寫(xiě)入下面的代碼:
from flask import Flask
app = Flask(__name__)
首先,導(dǎo)入類 flask.Flask,實(shí)例化創(chuàng)建一個(gè) Flask 應(yīng)用,第一個(gè)參數(shù)是 Flask 應(yīng)用的名稱。__name__ 是一個(gè)標(biāo)識(shí) Python 模塊的名字的變量:
- 如果當(dāng)前模塊是主模塊,那么此模塊名字就是 __main__;
- 如果當(dāng)前模塊是被 import 的,則此模塊名字為文件名。
@app.route('/')
def hello_world():
return '<b>Hello World</b>'
然后,定義函數(shù) hello_world,它返回一段 html 文本。app.route(’/’) 返回一個(gè)裝飾器,裝飾器來(lái)為函數(shù) hello_world 綁定對(duì)應(yīng)的 URL,當(dāng)用戶在瀏覽器訪問(wèn)這個(gè) URL 的時(shí)候,就會(huì)觸發(fā)這個(gè)函數(shù),獲取返回值。
if __name__ == '__main__':
app.run()
如果當(dāng)前模塊是主模塊,則變量 __name__ 為 '__main__,此時(shí)調(diào)用 run() 方法啟動(dòng) Flask 應(yīng)用。
運(yùn)行該程序,在瀏覽器中輸入 localhost:5000
,瀏覽器顯示如下:
在控制臺(tái)中,F(xiàn)lask 應(yīng)用輸出如下:
$ python3 hello.py
* Serving Flask app "hello" (lazy loading)
* Environment: production
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [20/Jul/2020 08:26:47] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [20/Jul/2020 08:26:47] "GET /favicon.ico HTTP/1.1" 404 -
這樣,我們就已經(jīng)搭建好了一個(gè)最簡(jiǎn)單的 Flask 應(yīng)用。
3. 修改監(jiān)聽(tīng)地址和端口
上面說(shuō)到要在瀏覽器中輸入 localhost:5000
才能看到運(yùn)行效果。其中 localhost 代表本地 IP 地址,你也可以把 localhost 改成 127.0.0.1,效果和 localhost 是一樣的。那么 5000 代表什么呢?
其實(shí) 5000 是一個(gè)端口號(hào),你可以把端口號(hào)理解為是門牌號(hào)。我們的電腦會(huì)為每一個(gè)應(yīng)用程序劃分運(yùn)行區(qū)間,每一個(gè)運(yùn)行區(qū)間的標(biāo)識(shí)就是端口號(hào),我們可以通過(guò)端口號(hào)來(lái)訪問(wèn)對(duì)應(yīng)的應(yīng)用程序,這和你在酒店根據(jù)門牌號(hào)找到房間是一個(gè)道理。
默認(rèn)情況下,F(xiàn)lask 應(yīng)用程序監(jiān)聽(tīng)地址 127.0.0.1 和端口 5000。如果你不想讓 Flask 程序運(yùn)行在 5000 端口,也可以通過(guò)參數(shù)設(shè)置可以修改默認(rèn)的監(jiān)聽(tīng)地址和端口,比如我們想讓 Flask 程序運(yùn)行在一個(gè)比較吉利的端口 8888 上面,可以這樣修改代碼:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return '<b>Hello World</b>'
if __name__ == '__main__':
app.run(host = '0.0.0.0', port = 8888)
設(shè)定 app.run 的函數(shù)參數(shù) host 為 ‘0.0.0.0’,表示監(jiān)聽(tīng)每一個(gè)可用的網(wǎng)絡(luò)接口;設(shè)定 app.run 的函數(shù)參數(shù) port 為 8888,表示監(jiān)聽(tīng)端口 8888。
5. 小結(jié)
本節(jié)講解了 Flask 應(yīng)用程序的基本框架,程序的功能是訪問(wèn) / 路徑時(shí),返回一段 HTML 文本。創(chuàng)建一個(gè)最小化的 Flask 應(yīng)用,使用思維導(dǎo)圖概括如下: