Flask系列06--(中间件)Flask的特殊装饰器 before_request,after_request, errorhandler
生活随笔
收集整理的這篇文章主要介紹了
Flask系列06--(中间件)Flask的特殊装饰器 before_request,after_request, errorhandler
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一.使用
Flask中的特殊裝飾器(中間件)方法常用的有三個
- @app.before_request # 在請求進入視圖函數之前
- @app.after_request # 在請求結束視圖函數之后 響應返回客戶端之前
- @app.errorhandler(404) # 重定義錯誤信息
二.執行順序
1.?before_request返回值為None,正常狀態具體分析
from flask import Flask, request, session, redirectapp = Flask(__name__) app.secret_key = "#$%^&*("@app.before_request # 在請求 之前 def be1():print("be1")@app.before_request # 在請求 之前 def be2():print("be2")@app.before_request # 在請求 之前 def be3():print("be3")@app.route("/") def index():print("index page")return "index page"@app.after_request def af1(vf_ret):# vf_ret.response[0]=b'2000000 OK!'print("af1")return vf_ret@app.after_request def af2(vf_ret):# vf_ret.response[0]=b'2000000 OK!'print("af2")return vf_ret@app.after_request def af3(vf_ret):# vf_ret.response[0]=b'2000000 OK!'print("af3")return vf_ret@app.errorhandler(404) def error404(error_message):print(error_message)# return f"你確定你要查看{request.path}這個頁面嗎?它已經走丟了,你快去找吧 "return redirect("http://baidu.com")if __name__ == '__main__':app.run(debug=True)?
結果
2.?如果在before_request中返回值不為空
在before_request中返回值不為空的話,那么它會將每一個after_request都走一遍
from flask import Flask, request, session, redirectapp = Flask(__name__) app.secret_key = "#$%^&*("@app.before_request # 在請求 之前 def be1():print('be1')return '111'@app.before_request # 在請求 之前 def be2():print("be2")@app.before_request # 在請求 之前 def be3():print("be3")@app.route("/") def index():print("index page")return "index page"@app.route("/login") def login():print("正在登陸......")session["username"] = "username"return "login"@app.after_request def af1(vf_ret):# vf_ret.response[0]=b'2000000 OK!'print("af1")return vf_ret@app.after_request def af2(vf_ret):# vf_ret.response[0]=b'2000000 OK!'print("af2")return vf_ret@app.after_request def af3(vf_ret):# vf_ret.response[0]=b'2000000 OK!'print("af3")return vf_ret@app.errorhandler(404) def error404(error_message):print(error_message)# return f"你確定你要查看{request.path}這個頁面嗎?它已經走丟了,你快去找吧 "return redirect("http://baidu.com")if __name__ == '__main__':app.run(debug=True)?
結果:
?
轉載于:https://www.cnblogs.com/robertx/p/10692259.html
總結
以上是生活随笔為你收集整理的Flask系列06--(中间件)Flask的特殊装饰器 before_request,after_request, errorhandler的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中信银行信用卡账单如何查询?这几招轻松查
- 下一篇: Flask 中内置的 Session