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函数、自定义错误方法、视图函数的返回值...相关推荐
- Flask框架 之abort、自定义错误、视图函数返回值与jsonify
一.abort函数 使用abort函数可以立即终止视图函数的执行,并可以返回给前端特定的值. abort函数的作用: 1.传递状态码,必须是标准的http状态码 2.传递响应体信息 @app.rout ...
- 返回Json数据浏览器带上<pre></pre>标签解决方法
返回Json数据浏览器带上 标签解决方法 参考文章: (1)返回Json数据浏览器带上 标签解决方法 (2)https://www.cnblogs.com/Rozdy/p/4994214.html 备 ...
- 如何解析json字符串及返回json数据到前端
前言:最近需要实现的任务是:写若干个接口,并且接口中的请求数据是json格式,然后按照请求参数读取前端提前整理好的json数据,并且将json数据返回到服务器端. 主要的工具:Gson 2.8.2 ...
- 通过response返回json数据到前端
1. response.setCharacterEncoding("UTF-8");response.setContentType("application/json&q ...
- springcloud gateway网关直接给前端返回json数据
项目场景: 最近项目的网关会做鉴权操作,鉴权失败想直接给前端请求返回json数据,但是response对象中好像没有直接操作response的方法,借鉴各位大佬的经验,发现想要给response加上j ...
- java调用远程 接口_java通过url调用远程接口返回json数据
java通过url调用远程接口返回json数据,有用户名和密码验证, 转自 https://blog.csdn.net/wanglong1990421/article/details/78815856 ...
- Flask框架(flask中设置响应信息的方法,返回json数据的方法)
设置响应信息的方法 1. 返回自定义的响应头,有两种方式: (1) 第一种是:视图函数return的时候,使用元组,返回自定义的信息 返回的时候的状态码可以自定义信息:&quo ...
- python返回json数据_python和flask中返回JSON数据的方法
在python中可以使用json将数据格式化为JSON格式: 1.将字典转换成JSON数据格式: s=['张三','年龄','姓名'] t={} t['data']=s return json.dum ...
- java后端 返回json_Java后端返回Json数据
Java后端返回Json数据 Jackson 导包 com.fasterxml.jackson.core jackson-databind 2.12.1 创建ObjectMapper对象,调用writ ...
最新文章
- uniapp富文本兼容视频实现方案
- 【题解】lugu P4095 Eden的新背包问题
- [渝粤教育] 三江学院 大学生创新基础课程 参考 资料
- maven 配置 pom.xml 打包生成:单jar包/jar包+lib目录
- [css] css的user-select:all 有什么用处?
- HTML作业-保护环境-保护地球
- java if 局部变量_java – 为什么局部变量在if-else构造中启动而在if-else-if构造中不启动?...
- 记账程序及GitHub学习记录2
- 缩时摄影制作软件——GlueMotion for Mac支持m1
- Mathcad绘制三维散点图
- TREND函数根据上半年各月产品销售量预算出未来销售量
- dtu阿里云自定义透传
- 20幻读是什么,幻读有什么问题
- Oracle语法限制,in内元素数量必须不大于1000
- Excel中批量生成复选框,带计算功能。品质管理、调查表常用工具
- 【隧道篇 / IPsec】(5.6) ❀ 01. IPsec 结构与需求 ❀ FortiGate 防火墙
- matlab内置vmd吗,matlab中使用VMD(变分模态分解)
- iOS Swift之RxSwift初探
- Android EventBus的实现原理
- 了解什么是枚举(enumeration)
热门文章
- 联想p720装系统_分享联想ThinkPad X1 Carbon笔记本最稳的重装WIN10系统方法
- java 正则 尖括号_使用JS正则表达式替换括号,尖括号等
- 部署MongoDB集群
- 程序员看片必备神器!包邮送一台!!
- 总说手机没有“好壁纸”,Python一次性抓取500张“美女”图片,够不够用!
- 我用 Python 帮朋友做了张图,结果
- 一键拼出你的微信好友图片墙!
- java doc转pdf_java 完美解决 ppt/pptx 转pdf 源码
- HTML里的表格不能复制粘贴,表格之间无法复制粘贴怎么办_两个EXCEL表格为什么不能复制和粘贴-win7之家...
- 动态折线图 python_python 怎么做个动态折线