设置响应信息
方式一:使用元祖返回自定义响应信息
有时需要在视图中设置其他标头。因为视图不必返回响应对象,但可以返回由Flask本身转换为响应对象的值,因此向其添加标题变得棘手。可以调用此函数而不是使用return,您将获得一个可用于附加标头的响应对象。
# coding:utf-8
from flask import Flask
app = Flask(__name__)
@app.route('/index')
def index():
# 1.使用元祖,自定义的响应信息
# 响应体 状态码 响应头
return 'index page', 200, [("Python", "Flask"), ("Python", "Tornado")]
if __name__ == "__main__":
app.run(debug=True)
方式二:使用字典返回自定义响应信息
# coding:utf-8
from flask import Flask
app = Flask(__name__)
@app.route('/index')
def index():
# 1.使用字典,自定义的响应信息
# 响应体 状态码 响应头
return 'index page', 400, {"Python": "Flask", "python": "Tornado"}
if __name__ == "__main__":
app.run(debug=True)
自定义状态码:
# coding:utf-8
from flask import Flask
app = Flask(__name__)
@app.route('/index')
def index():
# 1.使用字典,自定义的响应信息
# 响应体 状态码 响应头
return 'index page', "888 this is my status", {"Python": "Flask", "python": "Tornado"}
if __name__ == "__main__":
app.run(debug=True)
我们可以看到此时状态码变为我们自定义额状态码了,说明信息也是由我们自定义的。
方式三:使用make_response返回自定义响应信息
# coding:utf-8
from flask import Flask, make_response
app = Flask(__name__)
@app.route('/index')
def index():
# 1.使用make_response来构造响应信息
resp = make_response('index page')
resp.status = "666 this is my ststus"
resp.headers['city'] = 'beijing'
return resp
if __name__ == "__main__":
app.run(debug=True)
说明:
我们在返回响应的时候,可以不传递响应头,只传响应状态码,但不能省略响应状态码,只传响应头。
返回json数据
(1)返回json数据不指定响应头时前端会默认为文本类型
# coding:utf-8
from flask import Flask, make_response
import json
app = Flask(__name__)
@app.route('/index')
def index():
data = {
"name": "python",
"age": 20
}
json_data = json.dumps(data)
return json_data
if __name__ == "__main__":
app.run(debug=True)
(2)添加响应头Content-Type,指明要传送数据类型为json
# coding:utf-8
from flask import Flask, make_response
import json
app = Flask(__name__)
@app.route('/index')
def index():
data = {
"name": "python",
"age": 20
}
json_data = json.dumps(data)
return json_data, 200, {"Content-Type": "application/json"}
if __name__ == "__main__":
app.run(debug=True)
(3)通过jsonify返回json数据,更加方便
# coding:utf-8
from flask import Flask, jsonify
import json
app = Flask(__name__)
@app.route('/index')
def index():
data = {
"name": "python",
"age": 20
}
# jsonify帮助转为json数据,并设置响应头Content-Type为application/json
json_data = jsonify(data)
return json_data
if __name__ == "__main__":
app.run(debug=True)