Web框架——Flask系列之abort函數與自定義異常處理(十三)

一、abort函數

使用abort函數可以立即終止視圖函數的執行,並可以返回給前端特定的信息

  1. 傳遞狀態碼信息,必須是標準的http狀態碼
    abort(403)
  2. 傳遞響應體信息
    resp = Response(“login failed”)
    abort(resp)
from flask import Flask,request,abort,Response

app = Flask(__name__)


@app.route("/login",methods=["GET"])
def login():
    name = ""
    pwd = ""
    if name !="zhangsan" or pwd !="admin":
       # 使用abort函數可以立即終止視圖函數的執行
       # 並可以返回給前端特定的信息
       # 1. 傳遞狀態碼信息,必須是標準的http狀態碼
       # abort(403)
       # 2. 傳遞響應體信息
       resp = Response("login failed")
       abort(resp)
    return "login success"


if __name__ == '__main__':
    app.run(debug=True)

在這裏插入圖片描述
在這裏插入圖片描述

二、自定義異常處理(錯誤信息)

@app.route("/login",methods=["GET"])
def login():
    name = ""
    pwd = ""
    if name !="zhangsan" or pwd !="admin":
       # 使用abort函數可以立即終止視圖函數的執行
       # 並可以返回給前端特定的信息
       # 1. 傳遞狀態碼信息,必須是標準的http狀態碼
       abort(404)
       # 2. 傳遞響應體信息
       # resp = Response("login failed")
       # abort(resp)
    return "login success"

# 自定義的處理錯誤的方法
@app.errorhandler(404)
def handle_404_error(err):
    # 這個函數的返回值會是前端用戶看到的最終結果
    return "您訪問的頁面不存在,出現了404錯誤!錯誤信息:%s" % err


if __name__ == '__main__':
    app.run(debug=True)

在這裏插入圖片描述
在這裏插入圖片描述

三、返回的響應數據

可以返回一個元組,這樣的元組必須是 (response, status, headers) 的形式,且至少包含一個元素。 status 值會覆蓋狀態代碼, headers 可以是一個列表或字典,作爲額外的消息標頭值。

  1. 使用元組或字典,返回自定義的響應信息
from flask import Flask,request,abort,Response

app = Flask(__name__)


@app.route("/index",methods=["GET"])
def index():
    # 1. 使用元組,返回自定義的響應信息
    #       響應體       狀態碼   響應頭
    return "index page" , 400 , [("Itcast","python"),("City","shenzhen")]


在這裏插入圖片描述

from flask import Flask,request,abort,Response

app = Flask(__name__)


@app.route("/index",methods=["GET"])
def index():
    # # 1. 使用元組,返回自定義的響應信息
    # #       響應體       狀態碼   響應頭
    # return "index page" , 400 , [("Itcast","python"),("City","shenzhen")]

    return "index page" , 400 , {"Itcast":"python1","City1":"sz1"}

if __name__ == '__main__':
    app.run(debug=True)

在這裏插入圖片描述

from flask import Flask,request,abort,Response

app = Flask(__name__)


@app.route("/index",methods=["GET"])
def index():
    # # 1. 使用元組,返回自定義的響應信息
    # #       響應體       狀態碼   響應頭
    # return "index page" , 400 , [("Itcast","python"),("City","shenzhen")]

    # return "index page" , 400 , {"Itcast":"python1","City1":"sz1"}

    # return 裏面的狀態碼可以是自定義的狀態碼666
    return "index page", 666, {"Itcast": "python1", "City1": "sz1"}

if __name__ == '__main__':
    app.run(debug=True)

在這裏插入圖片描述

在這裏插入圖片描述
2. 使用make_response 來構造想要信息

from flask import Flask,request,abort,Response,make_response

app = Flask(__name__)


@app.route("/index",methods=["GET"])
def index():
    # # 1. 使用元組,返回自定義的響應信息
    # #       響應體       狀態碼   響應頭
    # return "index page" , 400 , [("Itcast","python"),("City","shenzhen")]

    # return "index page" , 400 , {"Itcast":"python1","City1":"sz1"}

    # return 裏面的狀態碼可以是自定義的狀態碼666
    # return "index page", 666, {"Itcast": "python1", "City1": "sz1"}
    # return "index page", "666 itcast status", {"Itcast": "python1", "City1": "sz1"}

    # 2. 使用make_response 來構造想要信息
    resp = make_response("index page 2")
    # 設置狀態嗎
    resp.status = "999 itcast"

    # 設置響應頭
    resp.headers["city"] = "sz"
    return resp

if __name__ == '__main__':
    app.run(debug=True)

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章