日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Web框架——Flask系列之请求上下文与应用上下文请求钩子Flask-Script扩展命令行(十七)

發布時間:2024/7/5 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Web框架——Flask系列之请求上下文与应用上下文请求钩子Flask-Script扩展命令行(十七) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、請求上下文和應用上下文

  • 請求上下文(request context)
    request和session都屬于請求上下文對象。

  • 應用上下文(application context)
    current_app和g都屬于應用上下文對象。
    current_app:表示當前運行程序文件的程序實例。
    g:處理請求時,用于臨時存儲的對象,每次請求都會重設這個變量

  • 二、請求鉤子

    請求鉤子是通過裝飾器的形式實現,Flask支持如下四種請求鉤子:

  • before_first_request:在處理第一個請求前運行。
  • @app.before_first_request
  • before_request:在每次請求前運行。

  • after_request(response):如果沒有未處理的異常拋出,在每次請求后運行。

  • teardown_request(response):在每次請求后運行,即使有未處理的異常拋出。

  • from flask import Flask,session app = Flask(__name__) @app.route("/index",methods=["GET","POST"]) def index():print("index 被執行")return "index 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):'''無論視圖函數中有沒有出現異常,每次請求(視圖函數處理)之后都被執行'''print("handle_teardown_request 被執行")return response if __name__ == '__main__':app.run(debug=True)

    通過判斷請求路徑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

    from flask import Flask from flask_script import Managerapp = Flask(__name__)manager = Manager(app)@app.route('/') def index():return '床前明月光'if __name__ == "__main__":manager.run() ...

    Terminal 終端中運行:

    總結

    以上是生活随笔為你收集整理的Web框架——Flask系列之请求上下文与应用上下文请求钩子Flask-Script扩展命令行(十七)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。