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