flask返回json数据到前端_小白学Flask第六天| abort函数、自定义错误方法、视图函数的返回值...
一個正在努力變強的公眾號
本文內容:
? ? 1. abort函數的使用
? ? 2. 自定義錯誤處理方法
? ? 3. 設置響應信息的方法
? ? 4.?返回json數據的方法
abort函數的使用? ? ? abort函數是我們又新接觸的一個函數,具體有什么作用?簡單點說它可以終止視圖函數的執行并且還可以返回給前端特定的信息。
下面我將舉兩個特定的例子
首先第一種:傳遞狀態碼信息(必須是http標準狀態碼)
# -*- coding: utf-8 -*-from flask import Flask, abortapp = Flask(__name__)@app.route("/login")def login(): # 1. 傳遞狀態碼信息(必須是http標準狀態碼) name = "" pwd = ""????#?如果name不等于123?pwd不等于1234?,我們就返回404狀態碼 if name != "123" and pwd != "1234":????????abort(404)????return?"login?success"if?__name__?==?'__main__': app.run(debug=True)我們運行一下:
可以看到返回為404的結果頁面
除了返回狀態碼外,abort函數還能傳遞響應體信息:
# -*- coding: utf-8 -*-from flask import Flask, abort, Responseapp = Flask(__name__)@app.route("/login")def login(): # 2. 傳遞響應體信息 name = ""????pwd?=?"" if name != "123" and pwd != "1234": resp = Response("login failed") abort(resp) return "login success"if __name__ == '__main__': app.run(debug=True)我運行之后看結果:
返回了我們想要的結果。其實這里我們可以直接使用return來返回結果,不需要通過Response對象來返回,所以這種返回方式我們并不經常使用。
自定義錯誤處理方法我們上面通過abort返回的狀態碼404,所返回的頁面都是固定的404頁面,有時我們需要去自己定義返回的頁面信息,我們該如何去做?
# -*- coding: utf-8 -*-from flask import Flask, abort, Responseapp?=?Flask(__name__)@app.errorhandler(404)def handle_404_error(err): '''自定義的處理錯誤方法''' # 這個返回值會是用戶在前端中所看到的結果 return u"很抱歉,出現了404錯誤 錯誤信息: %s" % errif __name__ == '__main__': app.run(debug=True)大家可以看到上面的handle_404_error函數,我們首先通過修飾器app.errorhandler(404)綁定了404的狀態碼,之后我們可以在這個函數中定義自己想要返回的頁面信息。
運行結果:
設置響應信息的方法設置響應信息的方法有兩種,我們先來講講第一種,通過元組的形式,返回自定義的響應信息。
@app.route("/index")def index(): # 1. 通過元組來自定義返回響應信息 return ("index page", 400, [("itcast","python"), ("City", "hn")])大家可以看到我們成功的返回了我們自定義的響應信息,當然除了這種方式,我們還可以將響應頭以字典的形式來返回:
@app.route("/index")def index():????#?1.?通過元組來自定義返回響應信息????return?("index?page",?400,?{"itcast":"python","City":"hn"})其返回結果與上圖一致。
除了一些規定的狀態碼,我們也可以返回自定義的狀態碼:
@app.route("/index")def index(): # 1. 通過元組來自定義返回響應信息 # return ("index page", 400, [("itcast","python"), ("City", "hn")]) return ("index page", 666, {"itcast":"python","City":"hn"})除了上面的方法去設置響應信息,我們還可以通過make_response函數來進行返回:
# -*- coding: utf-8 -*-from flask import Flask, make_responseapp?=?Flask(__name__)@app.route("/index")def index(): resp = make_response("index page") resp.status = "666" resp.headers["city"] = "hn" return respif __name__ == '__main__': app.run(debug=True)其效果與通過元組設置相同
返回json數據的方法在Flask中,我們如何返回json數據呢?在Flask中給我們提供了一個函數-jsonify,如何使用?
# -*- coding: utf-8 -*-from flask import Flask, jsonifyimport jsonapp?=?Flask(__name__)@app.route("/index")def?index(): data = { "name":"javaandpython", "age":20????} return jsonify(data)if __name__ == '__main__': app.run(debug=True)jsonify不僅可以幫我們把字典轉為json格式,還能幫我們把響應頭中的Content-Type設置為application/json。
我們除了把字典形式放入jsonify當中,還可以直接把數據傳到jsonify函數當中:
@app.route("/index")def?index(): return jsonify(name="javaandpython", age=20)這樣是相同的效果
Flask系列文章:
小白學Flask第一天 | 我的第一個Flask程序
小白學Flask第二天| app對象的初始化和配置
小白學Flask第三天| 今天把視圖函數的路由給講清楚!
小白學Flask第四天| 把路由轉換器玩的更牛逼
小白學Flask第五天 | 詳解很重要的request對象
持續更新中...
總結
以上是生活随笔為你收集整理的flask返回json数据到前端_小白学Flask第六天| abort函数、自定义错误方法、视图函数的返回值...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 虚拟机建立快照_使用qmeu-img创建
- 下一篇: 隐藏与显现_手机键盘摇一摇,隐藏功能立马