flask返回json数据到前端_小白学Flask第六天| abort函数、自定义错误方法、视图函数的返回值...
一個(gè)正在努力變強(qiáng)的公眾號(hào)
本文內(nèi)容:
? ? 1. abort函數(shù)的使用
? ? 2. 自定義錯(cuò)誤處理方法
? ? 3. 設(shè)置響應(yīng)信息的方法
? ? 4.?返回json數(shù)據(jù)的方法
abort函數(shù)的使用? ? ? abort函數(shù)是我們又新接觸的一個(gè)函數(shù),具體有什么作用?簡(jiǎn)單點(diǎn)說它可以終止視圖函數(shù)的執(zhí)行并且還可以返回給前端特定的信息。
下面我將舉兩個(gè)特定的例子
首先第一種:傳遞狀態(tài)碼信息(必須是http標(biāo)準(zhǔn)狀態(tài)碼)
# -*- coding: utf-8 -*-from flask import Flask, abortapp = Flask(__name__)@app.route("/login")def login(): # 1. 傳遞狀態(tài)碼信息(必須是http標(biāo)準(zhǔn)狀態(tài)碼) name = "" pwd = ""????#?如果name不等于123?pwd不等于1234?,我們就返回404狀態(tài)碼 if name != "123" and pwd != "1234":????????abort(404)????return?"login?success"if?__name__?==?'__main__': app.run(debug=True)我們運(yùn)行一下:
可以看到返回為404的結(jié)果頁面
除了返回狀態(tài)碼外,abort函數(shù)還能傳遞響應(yīng)體信息:
# -*- coding: utf-8 -*-from flask import Flask, abort, Responseapp = Flask(__name__)@app.route("/login")def login(): # 2. 傳遞響應(yīng)體信息 name = ""????pwd?=?"" if name != "123" and pwd != "1234": resp = Response("login failed") abort(resp) return "login success"if __name__ == '__main__': app.run(debug=True)我運(yùn)行之后看結(jié)果:
返回了我們想要的結(jié)果。其實(shí)這里我們可以直接使用return來返回結(jié)果,不需要通過Response對(duì)象來返回,所以這種返回方式我們并不經(jīng)常使用。
自定義錯(cuò)誤處理方法我們上面通過abort返回的狀態(tài)碼404,所返回的頁面都是固定的404頁面,有時(shí)我們需要去自己定義返回的頁面信息,我們?cè)撊绾稳プ?#xff1f;
# -*- coding: utf-8 -*-from flask import Flask, abort, Responseapp?=?Flask(__name__)@app.errorhandler(404)def handle_404_error(err): '''自定義的處理錯(cuò)誤方法''' # 這個(gè)返回值會(huì)是用戶在前端中所看到的結(jié)果 return u"很抱歉,出現(xiàn)了404錯(cuò)誤 錯(cuò)誤信息: %s" % errif __name__ == '__main__': app.run(debug=True)大家可以看到上面的handle_404_error函數(shù),我們首先通過修飾器app.errorhandler(404)綁定了404的狀態(tài)碼,之后我們可以在這個(gè)函數(shù)中定義自己想要返回的頁面信息。
運(yùn)行結(jié)果:
設(shè)置響應(yīng)信息的方法設(shè)置響應(yīng)信息的方法有兩種,我們先來講講第一種,通過元組的形式,返回自定義的響應(yīng)信息。
@app.route("/index")def index(): # 1. 通過元組來自定義返回響應(yīng)信息 return ("index page", 400, [("itcast","python"), ("City", "hn")])大家可以看到我們成功的返回了我們自定義的響應(yīng)信息,當(dāng)然除了這種方式,我們還可以將響應(yīng)頭以字典的形式來返回:
@app.route("/index")def index():????#?1.?通過元組來自定義返回響應(yīng)信息????return?("index?page",?400,?{"itcast":"python","City":"hn"})其返回結(jié)果與上圖一致。
除了一些規(guī)定的狀態(tài)碼,我們也可以返回自定義的狀態(tài)碼:
@app.route("/index")def index(): # 1. 通過元組來自定義返回響應(yīng)信息 # return ("index page", 400, [("itcast","python"), ("City", "hn")]) return ("index page", 666, {"itcast":"python","City":"hn"})除了上面的方法去設(shè)置響應(yīng)信息,我們還可以通過make_response函數(shù)來進(jìn)行返回:
# -*- 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)其效果與通過元組設(shè)置相同
返回json數(shù)據(jù)的方法在Flask中,我們?nèi)绾畏祷豭son數(shù)據(jù)呢?在Flask中給我們提供了一個(gè)函數(shù)-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不僅可以幫我們把字典轉(zhuǎn)為json格式,還能幫我們把響應(yīng)頭中的Content-Type設(shè)置為application/json。
我們除了把字典形式放入jsonify當(dāng)中,還可以直接把數(shù)據(jù)傳到j(luò)sonify函數(shù)當(dāng)中:
@app.route("/index")def?index(): return jsonify(name="javaandpython", age=20)這樣是相同的效果
Flask系列文章:
小白學(xué)Flask第一天 | 我的第一個(gè)Flask程序
小白學(xué)Flask第二天| app對(duì)象的初始化和配置
小白學(xué)Flask第三天| 今天把視圖函數(shù)的路由給講清楚!
小白學(xué)Flask第四天| 把路由轉(zhuǎn)換器玩的更牛逼
小白學(xué)Flask第五天 | 詳解很重要的request對(duì)象
持續(xù)更新中...
總結(jié)
以上是生活随笔為你收集整理的flask返回json数据到前端_小白学Flask第六天| abort函数、自定义错误方法、视图函数的返回值...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 虚拟机建立快照_使用qmeu-img创建
- 下一篇: 2017年html5行业报告,云适配发布