Flask是一個輕量的Python網站開發套件,這裡將介紹如何使用Flask建立第一個網頁Server。
建立實驗用環境
1. 用conda建立虛擬環境,這裡名稱自訂為 flask_example,python版本為3.9
conda create --name flask_example python=3.9
2. 進入剛剛建立好的虛擬環境
conda activate flask_example
3.安裝flask
conda install flask
4.建立一個專案放source code的目錄,並進入
mkdir flask_project
cd flask_project
建立Flask的Hello world
1.建立一個空檔案,名稱為app.py(切記名稱不可以是flask.py)
touch app.py
2.用編輯器開啟它(這裡慣用Visual Studio Code)
code .
3. 先建立一個一般Python的程式結構,包含一個run函式
def run():
# do what you want ...
return
if __name__ == '__main__':
run()
4.在run函式裡面放入一個dict的物件,它會是等一下呼叫Server時要回傳的JSON資料。這裡只有一個欄位,key是data,value是hello world。
def run():
res = {
'data': 'hello world'
}
5. 接著從flask套件中引入Flask類別和make_response函式,並且建立一個Flask物件,取名成app
from flask import Flask, make_response
app = Flask(__name__)
6.我們要讓剛剛的run函式變成Server的API,在Flask這個套件下,會用decorator(修飾子),來修飾run函式。decorator放在def run的上面:
@app.route('/', methods=['GET', 'POST'])
def run():
這裡的@是decorator的意思,route則是指定我們的路由,用’/’表示就是最上層methods=[‘GET’, ‘POST’]則指定我們要接受的請求方式。並且在run函式內,用make_response以及狀態碼200回傳res:
return make_response(res, 200)
7.在main函式中,讓Flask的物件app呼叫run來啟動Server,run的參數有
host這裡本機端直接用127.0.0.1
port這裡用8080
if __name__ == '__main__':
app.run(host='127.0.0.1', port=8080, debug=False, threaded=True)
把上述的過程組裝起來。完整的程式如下(app.py):
from flask import Flask, make_response
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def run():
res = {
'data': 'hello world'
}
return make_response(res, 200)
if __name__ == '__main__':
app.run(host='127.0.0.1', port=8080, debug=False, threaded=True)
把Flask Server Run起來
在有使用過conda activate的終端機上進入範例程式的位置,並執行:
python app.py
會在終端機上看到
* Serving Flask app 'app'
* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on http://127.0.0.1:8080
Press CTRL+C to quit
打開瀏覽器,網址輸入
http://127.0.0.1:8080
就會得到返回的結果
也可以在瀏覽器上點右鍵,選”檢查”,並到Network的標籤下觀察:
可以看到 Status Code是200 ,Server欄位是Python。
另外,我們回到終端機,只要每重新連上http://127.0.0.1:8080/,終端機都會輸出
127.0.0.1 - - [xx/xxx/xxxx xx:xx:xx] "GET / HTTP/1.1" 200 -
以上便是Flask的初學使用,透過上述的流程我們已經可以建立一個基本的Flask Server了。接下來就是如何接收和發送格式稍微複雜的Request、Response,以及調整路由的設計。
本文允許重製、散布、傳輸以及修改,但不得為商業目的之使用
使用時必須註明出處自:楊明翰 , 台灣人工智慧與資料科學研究室 https://aistudio.tw