在編寫第一個程序之前,首先有幾個概念需要知道:
1.初始化:
所有的Flask程序都必須創建一個程序實例。程序實例是Flask類的對象,經常使用的創建代碼爲:
from flask import Flask
app=Flask(__name__)
Flask類的構造函數只有一個必須指定的參數,Flask用這個參數決定程序的根目錄,以便能找到相對於程序根目錄的資源文件,這個參數爲程序主模塊或者包的名字。大多數程序中,Python的__name__變量就是所需的值。
2.路由和視圖函數:
客戶端把請求發送給web服務器,web服務器再把請求發送給Flask程序實例,程序實例需要知道對每個URL請求運行的代碼,所以保存了一個URL和Python函數的映射關係。
路由:處理URL和函數之間關係的程序。Flask中最便捷的定義路由的方式是使用實例提供的app.route修飾器,把修飾的函數註冊爲路由。
例:
@app.route('/')
def index():
return 'Hello world'
例子中把index()函數註冊爲程序跟地址的處理程序。index()函數的返回值稱爲響應,是客戶端接收到的內容。像index()這樣的函數稱爲視圖函數。
上面的例子路由爲靜態,若定義爲動態路由,則在路由中加入動態名字,如:
@app.route('/user/<name>')
def user(name):
return 'Hello, %s' % name
尖括號中的內容爲動態部分,任何能匹配靜態部分的URL都會映射到這個路由上。路由中的動態部分默認使用字符串,不過也可以使用類型定義,如:/user/<int:id>。Flask會將動態部分作爲參數傳入函數。
3.啓動服務器:
程序實例中使用run方法來啓動Flask集成的開發web服務器:
if __name__=='__main__':
app.run(debug=True)
服務器啓動後,會進入輪詢,等待並處理請求。輪詢會一直運行,直到程序停止。
app.run()函數可以接收一些參數,以便設置web服務器的操作模式。若想啓動調試模式,則將debug設置爲True。
一個完整的程序:hello.py
from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'Hello world' @app.route('/user/<name>')#動態路由 def user(name): return 'hello %s ' % name app.run(debug=True)我的是使用pycharm工具,建立一個flask項目,確保hello.py運行且服務器開啓後,在瀏覽器中訪問http://127.0.0.1:5000/,會出現一個Hello World歡迎界面。若訪問http://127.0.0.1:5000/user/sky,則出現一個使用name動態參數生成的歡迎頁面。