1. 程式人生 > >Python Flask Web 第一課 —— 基本概念和程式的基本結構

Python Flask Web 第一課 —— 基本概念和程式的基本結構

1. 初始化

所有的 Flask 程式都必須建立一個程式例項,所謂程式例項,在 Flask 框架下就是,Flask 類的例項物件(instance)。

from flask import Flask
app = Flask(__name__)

Web 伺服器使用一種名為 Web 伺服器閘道器介面(Web Server Gateway Interface,WSGI)的協議,把接收自客戶端(client)的所有請求(request)都轉交給這個物件處理。

2. 路由與檢視函式


這裡寫圖片描述

客戶端(例如 web 瀏覽器)把請求傳送給 web 伺服器,web 伺服器再把請求傳送給 flask 程式例項。

程式例項需要知道對每個 url 請求執行哪些程式碼,所以需要儲存一個 URL 與 Python 函式之間的對映關係。處理 URL 和函式之間的關係的程式成為路由

@app.route('/')
def index():
    return '<h1>Hello World!</h1>'

而像 index() 這樣的函式被稱為檢視函式(view function),檢視函式返回的響應可以是包含 HTML 的簡單字串,也可以是複雜的表單。

如果仔細觀察日常所用服務的某些 url 格式,會發現許多地址中都包含可變部分。例如 csdn 上的個人部落格地址,http://blog.csdn.net/<使用者名稱>

,使用者名稱是地址的一部分。

Flask 也支援這種形式的 URL,

@app.route('/user/<name>')
def user(name):
    return '<h1>Hello, %s</h1>' % name

尖括號中的內容就是動態可變部分,任何能匹配靜態部分的 URL 都會對映到這個路由上,呼叫檢視函式時,Flask 會將動態部分作為引數傳入函式(注意, 尖括號中的內容必須和函式的引數名保持一致)。

路由中的動態部分預設使用字串,不過也可以使用其他型別定義。Flask 支援在路由中使用 int、float 和 path 型別。path 型別也是字串,但不把斜線視作分隔符,而將其當做動態片段的一部分。

3. 啟動伺服器

程式例項app使用 run 方法啟動 Flask 整合的開發 Web 伺服器:

if __name__ == '__main__':
    app.run(debug=True)

伺服器啟動後,會進入輪詢,等待並處理請求,直到程式停止,比如按下 ctrl + c 鍵。換句話說,程式會阻塞在這裡app.run()後面的語句不會被執行。