簡介
Flask 是一個輕量級的 Web 框架, 如果要學習 Web 開發, Flask 非常適合作為我們學習的起點.
通過接下來的這一些列的部落格, 我們將學習如何利用 Flask 以及其他工具, 搭建一個簡單的網站.
We`ll build a web application from scratch. Have fun ?
開發環境
- 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
, 並在其中新建一個server.py
檔案mkdir ~/webapp cd ~/webapp touch server.py
-
接著, 我們開啟
server.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 server.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 server.py