flask返回数据类型
服务器这种后台返回的数据只能是string,json或者是文件类型,对应Html的解析文件类型
无法返回自定义的元组,只能返回规定好的元组,说白了只第一个元素有效
所有返回前台的内容其实都应该是Response的对象或者其子类,我们看到如果返回的是字符串直接可以写成return u'字符串内容'的形式,但是其实这个字符串也是经过了Response包装的:return Response(u'字符串') 我们看一段代码: # coding: utf-8 from flask import Flask, Response app = Flask(__name__) # type: Flask app.debug = True @app.route('/') def hello_world(): return 'Hello World!' @app.route('/login/') def login(): return Response(u'login') if __name__ == '__main__': app.run() 代码里我新建了一个login函数,返回的就是用Response包装后的字符串,访问地址可以看到页面打印了login。 我们有时候需要返回数组、字典之类的数据,但是数组或者字典这些数据是不能直接return的。这个时候怎么办呢?答案就是你必须将数组或字典转换成json后再返回(这就是为什么我们做接口测试的时候传参前用json.loads()将字符串转换成字典的原因了),因为json就是一个字符串。 数组或字典转换成json的函数叫做jsonify,你需要先导入from flask import jsonify或者像船长下面代码里写的那样,一下子导入好几个库: # coding: utf-8 from flask import Flask, Response, jsonify app = Flask(__name__) # type: Flask app.debug = True @app.route('/') def hello_world(): return 'Hello World!' @app.route('/login/') def login(): dict1 = {"name": "Warren"} return jsonify(dict1) if __name__ == '__main__': app.run() 上面代码里`dict1`的数据类型是一个字典,我们通过`jsonify()`将其转换成了`json`,就可以成功返回了,去页面,看到: 除了字符串以外,还可以返回元组,但是返回元组是有要求的,元组内容包括三个参数:response、status_code、headers,其中: response指页面打印信息,可以是字符串或Response对象 status_code指状态码,成功200,找不到页面404等等 headers指信息头 # coding: utf-8 from flask import Flask, Response, jsonify app = Flask(__name__) # type: Flask app.debug = True @app.route('/') def hello_world(): return 'Hello World!' @app.route('/login/') def login(): dict1 = {"name": "Warren"} return jsonify(dict1) @app.route('/set/') def myset(): return u'返回元组', 200, {"name": "Warren"} if __name__ == '__main__': app.run() 看上面代码的myset函数,我return了一个元组(单个值的元组可以不写括号,而且如果你加上括号,pycharm会有黄线提醒你remove redundant parentheless,意思就是去掉多余的括号)。
然后我们到页面访问/set/这个页面,打开F12就是开发者工具,然后刷新页面:
元组
demo.py(函数返回多个值(元组)): # 定义函数,有多个返回值(返回元组) def measure(): """测量温度和湿度""" print("测量开始...") temp = 39 wetness = 50 print("测量结束...") # 元组-可以包含多个数据,因此可以使用元组让函数一次返回多个值 # 如果函数返回的类型是元组,小括号可以省略 # return (temp, wetness) return temp, wetness # 小括号可以省略 # 元组 result = measure() print(result) # (39, 50) # 需要单独的处理温度或者湿度 - 不方便 print(result[0]) # 39 print(result[1]) # 50 # 如果函数返回的类型是元组,同时希望单独的处理元组中的元素 # 可以使用多个变量,一次接收函数的返回结果 # 注意:使用多个变量接收结果时,变量的个数应该和元组中元素的个数保持一致 gl_temp, gl_wetness = measure() # 接受函数多个返回值 print(gl_temp) # 39 print(gl_wetness) # 50 demo.py(利用元组交换变量值): a = 6 b = 100 # 解法1:-使用其他变量 # c = a # a = b # b = c # 解法2:-不使用其他的变量 # a = a + b # b = a - b # a = a - b # 解法3:-Python 专有 # a, b = (b, a) # 提示:等号右边是一个元组,只是把小括号省略了 a, b = b, a print(a) # 100 print(b) # 6 ———————————————— 版权声明:本文为CSDN博主「houyanhua1」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/houyanhua1/article/details/83999767