Flask是一個基于Python語言的微型Web框架。之所以被稱為微型,是因為其核心非常小,但是該Web框架簡約而不簡單,具有很強的擴展能力。本文介紹如何編寫和運行第一個Flask Web應用程序。
當然,閱讀本文之前,需要讀者有一定的Python基礎。有時間的同學可以填寫以下的調查,讓我們了解閱讀本文的讀者Python掌握情況。
一 安裝Flask框架
要使用Flask框架,必須先安裝Flask。安裝主要方式有兩種。
1.在PyCharm中安裝Flask
(1)執(zhí)行File|Settings命令,如圖2.2所示。
圖2.2 選擇File|Settings命令
(2)在上一步操作基礎上,繼續(xù)執(zhí)行Project:untitled(untitled為工程名,要根據實際的工程名來選擇)|Project Interpreter,如圖2.3所示。
圖2.3 找到Project Interpreter
(3)單擊圖2.3中的“+”號按鈕后,彈出如圖2.4所示對話框,在輸入框中輸入Flask,然后回車。
圖2.4 執(zhí)行Flask的安裝
(4)安裝成功以后,如圖2.5所示。
圖2.5 成功安裝Flask框架
2.用pip方式安裝Flask
筆者的虛擬環(huán)境地址為J:\flask-venv\venv,在cmd下按以下步驟操作:
(1) cd j:(2) cd J:\flask-venv\venv\Scripts(3) activate上面3個命令的每個命令輸入完后都需要回車。執(zhí)行完這3個命令后,表示成功激活當前虛擬環(huán)境。在(venv)J:\flask-venv\venv\Scripts>下輸入pip install Flask,即:
(venv)J:\flask-venv\venv\Scripts> pip install Flask然后回車,即可安裝Flask了。
注意: 后續(xù)章節(jié)用到的很多框架都可以通過這兩種方式來完成安裝,讀者可以根據自己的喜好來選擇安裝方式。
2.2.2 在Flask中輸出Hello World
所有的Flask程序都必須創(chuàng)建一個程序實例。Web服務器使用一種名為Web服務器網關接口(Web Server Gateway Interface,WSGI)的協議,把接收自客戶端的所有請求都轉給這個對象進行處理。程序實例是Flask類的對象,經常使用下述代碼創(chuàng)建:
from flask import Flaskapp = Flask(__name__)from flask import Flask這行代碼表示從Flask框架中引入Flask對象。app=Flask(__name__)這行代碼表示傳入__name__這個變量值來初始化Flask對象,Flask用這個參數確定程序的根目錄,__name__代表的是這個模塊本身的名稱。
使用route()裝飾器注明通過什么樣的URL可以訪問函數,同時在函數中返回要顯示在瀏覽器中的信息。代碼如下:
@app.route('/')def index():return 'Hello World!'@app.route('/')這行代碼指定了URL與Python函數的映射關系,我們把處理URL和函數之間關系的程序定義為路由,把被裝飾的函數index()注冊為路由,此處注冊給index()函數的路由為根目錄。
這里的index()函數叫做視圖函數,視圖函數必須要有返回值,返回價值為字符串或簡單的HTML頁面等內容。
系統初始化了,路由和視圖函數有了,Flask程序如何運行呢?Flask程序的運行需要服務器環(huán)境,我們可以通過run方法來啟動Flask自身集成的服務器。代碼如下:
if __name__=='__main__': app.run(debug=True)如果__name__=='__main__',就要啟用Web服務來運行上面的程序,服務器一旦開啟,就會進入輪詢狀態(tài),等待并處理請求。在app.run()中可以傳入一些參數,比如debug,app.run(debug=Ture),表示設置當前項目為debug模式,也就是調試模式。如果設置了調試模式,遇到程序有錯誤,會在控制臺輸出具體的錯誤信息,否則只會籠統地報告“應用服務器錯誤”的信息。另一方面,如果設置為調試模式,期間又修改了程序代碼,系統會自動重新將修改的代碼提交給Web服務器,你只需要確保瀏覽器沒有緩存,便可以得到最新修改的代碼結果。
app.run()還可以傳入端口等信息,比如app.run(host='0.0.0.0',port=8080),host='0.0.0.0'參數設置啟用本機的IP地址可以訪問,端口地址指定為8080,如果不指定,則為5000。
接下來,在PyCharm中實現上述項目。
在PyCharm中新建一個名稱為2-1的工程(新建工程注意使用已經存在的“虛擬環(huán)境”),如圖2.6所示。
圖2.6 選擇使用已有“虛擬環(huán)境”
app.py的內容見例2-1。
例2-1 Flask實例:app.py
01 # 從Flask框架中導入Flask類02 from flask import Flask03 # 傳入__name__初始化一個Flask實例04 app = Flask(__name__)05 #這個路由將根URL映射到了hello_world函數上06 @app.route('/')07 def hello_world(): #定義視圖函數08 return 'Hello World!' #返回響應對象09 if __name__ == '__main__':10 #指定默認主機為是127.0.0.1,port為888811 app.run(debug=True,host='0.0.0.0', port=8888)運行程序,結果如圖2.7所示。
圖2.7 第一個程序Hello World
如果啟用的端口不是5000端口,這里port=8888在筆者的PyCharm 2018.2.1版本中是不會生效的,訪問地址仍然為 http://127.0.0.1:5000/ ,為使新端口地址生效,還需要做進一步設置。
(1)執(zhí)行Run|Edit Configurations命令,如圖2.8所示。
圖2.8 執(zhí)行Run|Edit
(2)彈出如圖2.9所示對話框。
圖2.9 運行端口設置
(3)在Additional options輸入框中輸入“--host=192.168.31.118--port=8888”(192.168.31.118為筆者計算機的IPv4地址),當然這里你也可以輸入“--host=127.0.0.1--port=8888”。接下來,在瀏覽器地址欄可以輸入 http://192.168.31.118:8888/ 訪問網頁,192.168.31.118一個網段內的局域網計算機也可以通過 http://192.168.31.118:8888/ 訪問到此網頁的內容。
注: PyCharm在2018.2.1之前的版本是不需要上述兩個步驟設置的。