1. 程式人生 > >基於Python的Flask+web開發

基於Python的Flask+web開發

第2章 程式的基本結構

本章將帶你瞭解 Flask 程式各部分的作用,編寫並執行第一個 Flask Web 程式。

2.1 初始化

  所有 Flask 程式都必須建立一個程式例項,程式例項是 Flask 類的物件。   Web 伺服器使用一種名為 Web 伺服器閘道器介面(Web Server Gateway Interface,WSGI)的協議,把接收自客戶端的所有請求都轉交給這個物件處理。經常使用下述程式碼建立:

from flask import Flask
app = Flask(__name__)

  Flask 類的建構函式只有一個必須指定的引數,即程式主模組或包的名字__name__。不能傳入整形值會報錯,也不能傳入標準模組名,會影響靜態檔案的訪問,不會影響檢視函式的訪問。

__name__的作用:    1>Flask 用這個引數決定程式的根目錄,以便稍後能夠找到相對於程式根目錄的資原始檔位置。 2>建立靜態路由http://127.0.0.1:5000/static/,方便靜態資源的訪問。

2.2 路由和檢視函式

  客戶端(例如 Web 瀏覽器)把請求傳送給 Web 伺服器,Web 伺服器再把請求傳送給 Flask程式例項。程式例項需要知道對每個 URL 請求執行哪些程式碼,所以儲存了一個 URL 到Python 函式的對映關係。

路由:處理 URL 和函式之間關係的程式。

  在 Flask 程式中,使用程式例項提供的 app.route 修飾器定義路由,把修飾的函式註冊為路由。下面的例子說明了如何使用這個修飾器宣告路由:

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

檢視函式和響應:前例把 index() 函式註冊為程式根地址的處理程式。當瀏覽器訪問了部署程式的伺服器,會觸發伺服器執行 index() 函式。這個函式的返回值稱為響應,是客戶端接收到的內容。如果客戶端是 Web 瀏覽器,響應就是顯示給使用者檢視的文件。像 index() 這樣的函式稱為檢視函式(view function)。檢視函式返回的響應可以是包含HTML 的簡單字串,也可以是複雜的表單。

  某些 URL 格式會包含可變部分。尖括號中的內容就是動態部分,任何能匹配靜態部分的 URL 都會對映到這個路由上。呼叫檢視函式時,Flask 會將動態部分作為引數傳入函式。   路由中的動態部分預設使用字串

,不過也可使用型別定義。例如,路由 /user/ <int:id>只會匹配動態片段 id 為整數的 URL。Flask 支援在路由中使用 int、float 和 path 型別。程式碼如下所示:

path 型別:是字串,但不把斜線視作分隔符,而將其當作動態片段的一部分。

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

2.3 啟動伺服器

  程式例項用 run 方法啟動 Flask 整合的開發 Web 伺服器(flask提供的伺服器不適合開發模式下使用):app.run( )函式可以接收設定web伺服器操作模式的引數:除錯模式 -> debug=True:

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

name==’main':    用來判斷程入口,在這裡確保直接執行這個指令碼時才啟動開發Web 伺服器。如果這個指令碼由其他指令碼引入,__name__顯示的值為模組名。

2.4 一個完整的程式

程式程式碼如示例 2-1 所示。

from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
	return '<h1>Hello World!</h1>'

@app.route('/')
def user('/user/<name>):
	return '<h1>Hello, %s!</h1>' % name
if __name__ == '__main__':
app.run(debug=True)