Flask 程式的基本結構

2021-07-16 20:37:48 字數 2989 閱讀 7021

初始化

from flask import flask #匯入flask模組

注:對於

flask開發

者來說,傳給flask應用程式建構函式的name引數是比較容易弄混淆的。flask使用這個引數來確定應用程式的根目錄,這樣以後可以相對這個路徑來找到資源檔案。

路由和檢視函式

註冊新的路由

在flask應用中,路由是指使用者請求的url與檢視函式之間的對映。

flask框架 根據http請求的url在路由表中匹配預定義的url規則,找到對應的檢視函式, 並將檢視函式的執行結果返回wsgi伺服器。

匹配動態url

route裝飾器 :可以使用flask應用例項的route裝飾器將乙個url規則繫結到乙個檢視函式上。

下面程式中route裝飾器將根目錄繫結在index檢視上。

return ''

url變數型別過濾

return '' % name

類似:

啟動伺服器

if __name__ == '__main__':

# 模組是物件,並且所有的模組都有乙個內建屬性 __name__。# 乙個模組的 __name__ 的值取決於您如何應用模組。# 如果 import 乙個模組,那麼模組__name__ 的值通常為模組檔名,不帶路徑或者副檔名。# 但是您也可以像乙個標準的程式樣直接執行模組,# 在這種情況下, __name__ 的值將是乙個特別預設"__main__"。

# debug=true 除錯模式開啟

乙個完整的程式

hello.py: 乙個完整的flask程式

from flask import flask

return ''

if __name__ == '__main__'

執行結果如下:

hello.py: 包含動態路由的flask程式

from flask import flask

return ''

return '' % name

if __name__ == '__main__'

# 定義了動態路由/user/

執行結果如下:

請求-響應迴圈

程式和請求上下文

請求物件封裝了客戶端傳送的http請求。

將請求物件作為引數傳入檢視函式,檢視函式即可訪問請求物件。

from flask import request

user_agent = request.headers.get('user-agent')

return 'your browser is %s

' % user_agent

flask上下文全域性變數

變數名

上下文 說明

程式上下文

當前啟用程式的程式例項 g

程式上下文

處理請求時用作臨時儲存的物件。每次請求都會重設這個變數。

request

請求上下文

請求物件,封裝了客戶端發出的http請求中的內容。

session

請求上下文

使用者會話,使用者儲存請求之間需要「記住」的值的詞典

程式上下文使用方法:

請求排程

url對映中的head、options、get是請求方法,由路由進行處理。

不同的請求方法傳送到相同的url上時,會使用不同的檢視函式進行處理。

請求鉤子

flask支援以下4種鉤子:

before_first_request:註冊乙個函式,在處理第乙個請求之前執行。

before_request:註冊乙個函式,在每次請求之前執行。

after_request:註冊乙個函式,如果沒有未處理的異常丟擲,也在每次請求之後執行。

teardown_request:註冊乙個函式,即使有未處理的異常丟擲,也在每次請求之後執行。 響應

建立響應物件並設定cookie

from flask import make_response

def index():

response = make_response()

response.set_cookie('answer','42')

return response

重定向from flask import redirect

return redirect('')

錯誤處理

from flask import abort

user = load_user(id)

if not user:

abort(404)

return '' % user.name

flask擴充套件

flask被設計為可擴充套件模式,一些重要功能是用安裝包的形式增加。

使用flask-script支援命令列選項

(venv)$pip install flask-script

hello.py:使用flask-script

from flask_script import manager

manager.run()

執行python程式: python hello.py runserver

web伺服器可使用 網路中的任一台電腦進行訪問,其中'a.b.c.d'是伺服器所在計算機的外網的ip位址。

python hello.py runserver --host 0.0.0.0

flask 學習之路(二) 程式的基本結構

2.1初始化 所有的flask程式都必須建立乙個程式例項。web伺服器使用一種名為web伺服器的閘道器介面 wsgi 的協議,把接收自客戶端的所有請求都轉達給這個物件處理。程式的例項是flask類 的物件,經常使用下述 建立 from flask import flask flask類的建構函式 建...

程式的基本結構

這樣的函式稱為檢視函式。此函式的返回值稱為響應。name 啟用除錯模式,可以把 debug 引數設為 true 4.flask 從客戶端收到請求時,要讓檢視函式能訪問一些物件,這樣才能處理請求。請求對 象就是乙個很好的例子,它封裝了客戶端傳送的 http 請求。flask 使用上下文臨時把某些物件變...

flask學習筆記之大型程式的結構

我們將介紹一種使用包和模組組織大型程式的方式。flask 程式的基本結構如示例 7 1 所示。這種結構有4個頂級資料夾 2 migrations資料夾包含資料庫遷移指令碼 3 單元測試編寫在tests包中 4 venv資料夾包含python虛擬環境 同時還建立了一些新檔案 程式經常需要設定多個配置。...