Flask框架從入門到精通之異常處理(十)

〆 小源。發表於2019-04-30

知識點: 1、abort()函式 2、自定義狀態碼

一、概況

我們在寫檢視函式時,會對前端傳遞過來的引數進行校驗,如果校驗不過,會給前端返回一些特定的異常資訊。在Flask中,abort() 函式可以立即終止檢視函式的執行,並且把相對應的錯誤資訊返回給前端。

二、使用

from flask import Flask, abort

app = Flask(__name__)


@app.route('/login/<phone>')
def index(phone):
    if phone != '123456':
        abort(502)  # 立即停止檢視函式執行,並把異常返回
    return phone


if __name__ == '__main__':
    # 0.0.0.0代表任何能代表這臺機器的地址都可以訪問
    app.run(host='0.0.0.0', port=5000, debug=True)  # 執行程式

複製程式碼

我們瀏覽器除錯一下:

在這裡插入圖片描述
注意abort裡面的狀態碼必須就是HTTP狀態碼,不能自己隨便寫。常見狀態碼如下:

狀態程式碼有三位數字組成,第一個數字定義了響應的類別,共分五種類別:

  • 1xx:指示資訊--表示請求已接收,繼續處理
  • 2xx:成功--表示請求已被成功接收、理解、接受
  • 3xx:重定向--要完成請求必須進行更進一步的操作
  • 4xx:客戶端錯誤--請求有語法錯誤或請求無法實現
  • 5xx:伺服器端錯誤--伺服器未能實現合法的請求 常見狀態碼:
200 OK                        //客戶端請求成功
400 Bad Request               //客戶端請求有語法錯誤,不能被伺服器所理解
401 Unauthorized              //請求未經授權,這個狀態程式碼必須和WWW-Authenticate報頭域一起使用 
403 Forbidden                 //伺服器收到請求,但是拒絕提供服務
404 Not Found                 //請求資源不存在,eg:輸入了錯誤的URL
500 Internal Server Error     //伺服器發生不可預期的錯誤
503 Server Unavailable        //伺服器當前不能處理客戶端的請求,一段時間後可能恢復正常
複製程式碼

三、自定義狀態碼資訊

有時候我們感覺預設的狀態碼資訊對於使用者提示不友好,我們可以預設的狀態碼資訊改成我們自己想要的。我們在專案中加上如下函式:

# 自定義502狀態碼資訊
@app.errorhandler(502)
def handle_502_error(error):  # error:錯誤資訊
    return "伺服器泡妞去了"
複製程式碼

我們瀏覽器除錯一下:

在這裡插入圖片描述
歡迎關注我的公眾號:

image

相關文章