Web框架——Flask系列之请求上下文与应用上下文请求钩子Flask-Script扩展命令行(十七)
生活随笔
收集整理的這篇文章主要介紹了
Web框架——Flask系列之请求上下文与应用上下文请求钩子Flask-Script扩展命令行(十七)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、請求上下文和應用上下文
請求上下文(request context)
request和session都屬于請求上下文對象。
應用上下文(application context)
current_app和g都屬于應用上下文對象。
current_app:表示當前運行程序文件的程序實例。
g:處理請求時,用于臨時存儲的對象,每次請求都會重設這個變量。
二、請求鉤子
請求鉤子是通過裝飾器的形式實現,Flask支持如下四種請求鉤子:
before_request:在每次請求前運行。
after_request(response):如果沒有未處理的異常拋出,在每次請求后運行。
teardown_request(response):在每次請求后運行,即使有未處理的異常拋出。
通過判斷請求路徑url 來讓鉤子函數根據視圖的不同執行不同的處理函數:
from flask import Flask,request,url_for app = Flask(__name__) @app.route("/index",methods=["GET","POST"]) def index():print("index 被執行")# a=1/0return "index page"@app.route("/hello") def hello():print("hello 被執行")return "hello page"# 四種鉤子函數 @app.before_first_request def handle_before_first_request():'''在第一次請求處理之前先被執行'''print("handle_before_first_request 被執行") @app.before_request def handle_before_request():'''在每次請求之前都被執行'''print("handle_before_request 被執行") @app.after_request def handle_after_request(response):'''每次請求(視圖函數處理)之后都被執行,前提是視圖函數中沒有出現異常'''print("handle_after_request 被執行")return response@app.teardown_request def handle_teardown_request(response):'''無論視圖函數中有沒有出現異常,每次請求(視圖函數處理)之后都被執行'''path = request.pathif path == url_for("index"):print("這是在請求鉤子中,判斷請求的視圖邏輯:index")elif path == url_for("hello"):print("這是在請求鉤子中,判斷請求的視圖邏輯:hello")print("handle_teardown_request 被執行")return responseif __name__ == '__main__':app.run(debug=True)三、Flask-Script擴展命令行
pip install Flask-Script
Terminal 終端中運行:
總結
以上是生活随笔為你收集整理的Web框架——Flask系列之请求上下文与应用上下文请求钩子Flask-Script扩展命令行(十七)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Web框架——Flask系列之设置和读取
- 下一篇: Chapter7-8_Deep Lear