在view函式中,如果需要中斷request,可以使用abort(500)或者直接raise exception。當然我們還需要返回乙個出錯資訊給前端,所以需要定製一下errorhandler。
一般只需要兩個handler即可,乙個是404錯誤,乙個是500一類的伺服器端錯誤。當然也可以自定義錯誤。
abort:flask中異常處理語句,功能類似於raise語句;觸發abort後會中止視力方法,返回分發函式;abort引數需為http狀態碼的子集。
errorhandler:裝飾器,註冊異常處理函式,配合abort函式使用,根據狀態碼匹配,返回response() 例項或者(string, status_code)。
from werkzeug.exceptions import abort藍圖也可以註冊異常處理方法,可以註冊藍圖級/全域性級異常處理函式(僅裝飾器方法名不同)。def view_abort():
abort(405) # 請求中斷,返回狀態碼405
def err_handle(e):
return '錯誤404' + str(e), 405
# return response('錯誤404' + str(e), 405) # 與上一行效果相同
具體見下方案例,不過不建議在藍圖中註冊全域性級異常處理函式。
# 非全域性生產環境下一般將大部分異常隱藏,只返回500到前端。@blue_t.errorhandler(405)
def err_405(e):
print('err_405')
return 'error 405 from blueprint blue_t'
def err_404(e):
return 'blueprint error_405'
#return render_template('error/404.html')
下例即是將錯誤日誌寫入檔案,前端返回500
# 異常處理
return '錯誤405: ' + str(e), 405
def err_all(error):
return response(r'伺服器錯誤', 500)關於abort/errorhandler
flask在full_dispatch_request中處理請求,如果使用abort即為丟擲異常,
接下來執行rv = self.handle_user_exception(e)
它會去註冊的異常處理函式中根據e.code(abort的引數)匹配,並且優先在藍圖的異常處理函式中進行匹配
無論如何,最後的結果一定是response() 例項或者(string, status_code)。
如果願意的話,也可以直接在檢視中 return response('error 500', 500)
對於異常可以由server僅返回狀態碼,nginx返回靜態網頁,以節約伺服器資源。
Flask 請求異常處理
在整個請求的過程當中,如果反生錯誤,或者需要根據不同的狀態碼返回對應的錯誤資訊 abort中斷請求from flask import flask defhello world abort 404 請求到此中斷,後面的不會執行,並且這裡的http的狀態碼為401 return hello,world ...
Flask的訊息提示異常處理
一 訊息提示 flask提供訊息閃現機制,方便在應用中訊息提示 首先匯入flash方法,再對secret key進行賦值,以對訊息加密 然後定義乙個路由,使用flash方法,並返回模板 coding utf8 from flask import flask,flash,render template...
flask 響應資訊與異常處理
使用abort函式可以立即終止檢視函式的執行,並可以返回前端特定的資訊 from flask import flask,request,abort,response login methods get deflogin name request.form.get name pwd request.f...