開發環境
- Ubuntu 16.04
Python 3.5
Flask 1.0.2
-
命令如下
sudo apt-get upgrade sudo apt-get install python3-setuptools sudo apt-get install python3-dev sudo apt-get install python3-pip sudo pip3 install pip --upgrade sudo pip3 install flask
第一個 server
-
首先我們創建一個文件夾
webapp
, 並在其中新建一個main.py
文件mkdir ~/webapp cd ~/webapp touch main.py
-
接着, 我們打開
main.py
, 按照 Flask Quickstart 的示例, 開始編寫第一個server
from flask import Flask app = Flask(__name__) @app.route('/', methods=['GET']) # methods 默認是 GET 因此可以簡寫爲如下形式 # @app.route('/') def hello(): return 'Hello' if __name__ == '__main__': app.run(host='0.0.0.0', port=8080, debug=True)
保存文件後, 在
Terminal
中輸入如下命令, 即可運行webapp
. 我們在瀏覽器中輸入http://server_ip:8080
即可訪問網站, 頁面的內容就是Hello
python3 main.py
編寫 IndexHandler
-
在上一節中, 我們使用了
@ decorator
來指定某個路由對應的處理函數, 這樣的寫法非常方便. 同時, 我們也可以編寫我們自己的Handler
來處理各個不同的頁面(路徑). 比如, 對於首頁Index
, 即http://server_ip:8080/
, 我們可以編寫一個class IndexHandler
, 注意這是一個MethodView
的子類, 也就是說這是一個View Handler
from flask import Flask from flask.views import MethodView app = Flask(__name__) class IndexHandler(MethodView): def __init__(self, name): print(name) def get(self): return 'It is a GET request' def post(self): return 'It is a POST request' if __name__ == '__main__': app.add_url_rule('/', view_func=IndexHandler.as_view('index')) app.run(port=8080, host='0.0.0.0', debug=True)
根據 flask docs, 傳給
as_view()
的參數name
會轉發給構造函數, 我們暫時用不到這個參數name
, 但是爲了保持命名的一致性, 我們將其設置爲index
-
保存文件後, 在
Terminal
中輸入如下命令, 即可運行webapp
. 我們在瀏覽器中輸入http://server_ip:8080
即可訪問網站, 頁面的內容是It is a GET request
python3 main.py