Flask系列06--(中間件)Flask的特殊裝飾器 before_request,after_request, errorhandler

一.使用

Flask中的特殊裝飾器(中間件)方法常用的有三個

  • @app.before_request # 在請求進入視圖函數之前
  • @app.after_request # 在請求結束視圖函數之后 響應返回客戶端之前
  • @app.errorhandler(404) # 重定義錯誤信息
@before_request
def func():pass@after_request
def func(ret):  # 函數中要加參數pass@app.errorhandler(404)  # 錯誤代碼
def error404(errormessage):  # 函數中要加參數pass

二.執行順序

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/249184.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249184.shtml
英文地址,請注明出處:http://en.pswp.cn/news/249184.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Flask 中內置的 Session

Flask中的Session非常的奇怪,他會將你的SessionID存放在客戶端的Cookie中,使用起來也非常的奇怪 1. Flask 中 session 是需要 secret_key 的 from flask import session app Flask(__name__) app.secret_key "DragonFire" secret_key 實際上是用來加密字符串的,如果…

CSS像素、物理像素、邏輯像素、設備像素比、PPI、Viewport

最近看了很多這方面的文章,能搜到的基本看了個遍,但感覺還是似懂非懂,知道這個東西,很難說出這是個什么東西,先整理一些概念,慢慢消化,以后慢慢探索其中的原因。 1、PX(CSS pixels) 1.1 定義 …

【轉】10條你不可不知的css規則

10條你不可不知的css規則 Posted on 2006-12-20 10:33 雨中太陽 閱讀(343) 評論(1) 編輯 收藏 :【譯】10條你不可不知的css規則正文: Published December 6th, 2004 in CssStaff Tags: No Tags. 原文地址:Ten CSS Tricks You May not Know k…

Python 面向對象【1】

對象 屬性 方法面向對象特征:分裝 繼承 多態【不同對象對同一方法響應不同行動】類定義class xxx:........類對象類對象支持兩種操作:屬性引用和實例化 屬性引用 使用和 Python 中所有的屬性引用一樣的標準語法:類對象名.屬性名 類對象創建…

【前端面試】HTML5+CSS3初級面試1

最近剛好在看前端的面試,把看到的內容總結一下,方便大家一起學習。 1、簡單說一下對HTML5CSS3的了解。 HTML5和CSS3不僅是兩項新的Web技術標準,而且代表了下一代HTML和CSS技術。其未來的發展前景已經可以預見,那就是HTML5必將被越…

福大軟工 · 第八次作業(課堂實戰)- 項目UML設計(團隊)

1、隊伍信息: 隊伍名稱:彳艮彳亍團隊 學號名本次作業博客鏈接031602219奇豪(隊長)https://www.cnblogs.com/S031602219/p/9822576.html041602209毓明http://www.cnblogs.com/mingsonic/p/9820702.html041602204水源http://www.cnblogs.com/littlenorthwe…

【轉發】實現yolo3模型訓練自己的數據集總結

原文鏈接:實現yolo3模型訓練自己的數據集總結 經過兩天的努力,借鑒網上眾多博客,在自己電腦上實現了使用yolo3模型訓練自己的數據集并進行測試圖片。本文主要是我根據下面參考文章一步步實施過程的總結,可能沒參考文章中那么詳細&…

詳解 vue-cli 的打包配置文件代碼(帶注釋)

一、前言 對于webpack基礎不好,node指令不通的童鞋。估計對自己搭建Vue、react腳手架是相當頭疼的,有種無從下手的感覺。然而,從頭看這2塊,耗時太長,而且說實話得練才行,不練練手看不明白。那大多數人就采取…

NoClassDefFoundError

技術之路最公平也最殘酷的原因是:沒有捷徑,需要日積月累的積累,以及對技術持久的熱情。NoClassDefFoundError這個錯誤一般就兩種情況:1、沒有引入相應的jar包2、兩個jar包中都有這個class,無法確認是引用的哪一個&…

【記錄一下】從0到1 我的python開發之路

請設計實現一個商城系統,商城主要提供兩個功能:商品管理、會員管理。商品管理:- 查看商品列表 - 根據關鍵字搜索指定商品 - 錄入商品會員管理:【無需開發,如選擇則提示此功能不可用,正在開發中,…

Python10/22--面向對象編程/類與對象/init函數

類: 語法: class關鍵字 類名# 類名規范 大寫開頭 駝峰命名法class SHOldboyStudent: # 描述該類對象的特征 school "上海Oldboy" name "矮根" age 68 gender "unknown" # 在定義階段 # 只要包含該類的py被…

Django Form和ModelForm組件

Form介紹 我們之前在HTML頁面中利用form表單向后端提交數據時,都會寫一些獲取用戶輸入的標簽并且用form標簽把它們包起來。 與此同時我們在好多場景下都需要對用戶的輸入做校驗,比如校驗用戶是否輸入,輸入的長度和格式等正不正確。如果用戶輸…

ESLint 規則詳解

前端界大神 Nicholas C. Zakas 在 2013 年開發的 ESLint,極大地方便了大家對 Javascript 代碼進行代碼規范檢查。這個工具包含了 200 多條 Javascript 編碼規范且運行迅速,是幾乎每個前端項目都必備的輔助工具。可是,這么多規則,每…

全文搜索引擎 ElasticSearch 還是 Solr?

原文鏈接 最近項目組安排了一個任務,項目中用到了全文搜索,基于全文搜索 Solr,但是該 Solr 搜索云項目不穩定,經常查詢不出來數據,需要手動全量同步,而且是其他團隊在維護,依賴性太強&#xff0…

對局匹配

問題描述小明喜歡在一個圍棋網站上找別人在線對弈。這個網站上所有注冊用戶都有一個積分,代表他的圍棋水平。小明發現網站的自動對局系統在匹配對手時,只會將積分差恰好是K的兩名用戶匹配在一起。如果兩人分差小于或大于K,系統都不會將他們匹…

NodeJS作為Web架構中間層的使用

截至2016年12月,中國網民規模已達7.31億。傳統的網站系統是否能夠支撐得起如此龐大的且不斷增長的用戶訪問并且為用戶提供體驗友好的頁面? 一、傳統的前后端: 二、傳統的前后端分離問題: 性能問題: 1、渲染、數據都在…

Springboot項目修改html后不需要重啟---springboot項目的熱部署

一、spring-boot-devtools 在pom中直接引入依賴 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional> </dependency> 設置以下兩項&#xff08…

Hibernate中session的get方法和load方法的區別

一.發送SQL時機&#xff1a; load方法采用延遲加載&#xff08;lazy懶加載&#xff09;&#xff0c;執行到這行代碼的時候&#xff0c;不會發送SQL語句&#xff0c;當真正使用這個對象的數據&#xff08;對象的數據不包括主鍵&#xff09;的時候才發送SQL語句&#xff1b; get…

Node.js Web 開發框架大全《中間件篇》

這篇文章與大家分享優秀的 Node.js 中間件模塊。Node 是一個服務器端 JavaScript 解釋器&#xff0c;它將改變服務器應該如何工作的概念。它的目標是幫助程序員構建高度可伸縮的應用程序&#xff0c;編寫能夠處理數萬條同時連接到一個&#xff08;只有一個&#xff09;物理機的…

windows server 2012 流媒體服務器搭建(直播與點播)

IIS Live Smooth Streaming&#xff08;實時平滑流式處理&#xff09;是微軟下一代流媒體解決方案。該技術是在IIS web中集成媒體傳輸平臺IIS media services&#xff0c;實現利用標準 HTTP Web 技術以及高級 Silverlight 功能&#xff0c;確保在互聯上傳輸質量最佳、播放流暢音…