从这一节开始,我就要开始讲关于模板的知识了。先来学习一下Response 的相关知识。 所有返回前台的内容其实都应该是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 ,其中: # 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就是开发者工具,然后刷新页面: 然后看开发者工具: 这就是一个返回元组的例子了。 明天我们继续Response 的知识。
|