- Python Web開發技術與應用(Flask版·微課版)
- 李粵平 李巖主編
- 817字
- 2023-11-16 18:36:24
1.3 一個簡單的Web程序
Flask項目創建之后會包含一個簡單的Web程序,本節講解這個簡單的項目都包含了什么內容,這些內容有哪些作用。
1. 應用初始化
所有Flask程序在創建時都必須先創建一個應用實例,也就是進行應用初始化。對應的程序代碼如下。
from flask import Flask # 應用的初始化 app = Flask(__name__)
應用實例創建之后,才可以對路由及視圖函數進行綁定。此處的“__name__”用于獲取當前代碼文件的文件名。
2. 運行應用
程序最后的代碼用于啟動服務器,運行應用實例。對應代碼如下。
# 啟動服務器 if __name__ == '__main__': app.run(debug=True)
此處的“__name__ == '__main__'”用于判斷當前文件是否直接被運行。
如果需要開啟調試模式,可以在app.run()方法中添加debug參數。
3. 路由與視圖
在用戶使用瀏覽器訪問網頁的過程中,瀏覽器首先會發送一個請求到服務器,服務器接收到請求之后,會將請求轉交給Flask進行處理。Flask會對用戶所訪問的URL進行解析,然后找到相應的響應內容,將其返回到瀏覽器。
路由用于使Flask知道URL對應的內容在哪里。
回到運行之前的代碼,可以看到有一個函數被裝飾器app.route裝飾,這個裝飾器用于定義路由,確定URL與Python函數之間的映射。對應代碼如下。
@app.route('/') def hello_world(): return 'Hello World!'
被路由裝飾器裝飾的函數便是視圖函數,用于返回用戶請求URL的相應響應內容。此處返回的響應內容可以是簡單的字符串,也可以是復雜的HTML頁面。
如果仔細觀察平時所訪問的URL,會發現其中很多地方都存在可變的部分。例如,在GitHub用戶頁面的URL(https://github.com/<username>)中,用戶名作為參數被包含在內;而在Flask中,可以簡單地實現這種風格的路由綁定。
接下來,嘗試實現上面所描述的效果,以下是所需的代碼。
@app.route('/user/<username>') def user(username): return 'This is %s' % username
上述代碼中的視圖函數包含了username參數,當用戶訪問“/user/用戶名”頁面時,URL中username占位符的數據會傳遞到username參數中,最后視圖函數返回相應用戶的信息。
代碼輸入完后可以單擊按鈕運行應用,來測試效果。
當訪問服務器下的“/user/HsOjo”頁面時,服務器返回了動態生成的“This is HsOjo”響應信息,如圖1-3-1所示。同理,訪問“/user/Test”則會返回“This is Test”。

圖1-3-1 用戶頁面
在本節中,如果對操作過程有疑問,可跟隨右側視頻進行操作。

一個簡單的Web程序