响应在Flask中使用Response对象表示,响应报文中的大部分由服务器来处理,大多数情况,我们只负责返回主体。
Flask会调用make_response()方法将视图函数转换为响应对象,这里包含:响应主体、状态码、首部字段,其中首部字段为字典。
普通的响应
普通的响应只包含响应主体,且我们可以指定状态码
from flask import Flask, request, redirect
app = Flask(__name__)
@app.route('/hello3')
def hello3():
return '<h1>Hello, Flask!</h1>', 201
重定向
手动重定向
from flask import Flask, request, redirect
app = Flask(__name__)
@app.route('/hello1',methods={'POST'}) # 手动重定向
def hello1():
return '', 302, {'Location': 'http://www.361buy.com'}
使用函数重定向
from flask import Flask, request, redirect
app = Flask(__name__)
@app.route('/hello2')
def hello2():
return redirect('http://www.baidu.com')
重定向到其他视图,这里感觉像是转发,还需要研究下
@app.route('/h1')
def hi():
return redirect(url_for('hello'))
设置响应格式
在response中,我们可以设置响应文本的MIME类型。例如,这里是将响应报文设置为纯文本类型
from flask import Flask, request, redirect, url_for, abort, make_response
@app.route('/foo')
def foo():
response = make_response('Hello, World!')
response.mimetype = 'text/plain'
return response
设置json类型响应
from flask import Flask, request, redirect, url_for, abort, make_response, json
@app.route('/foo1')
def foo1():
data = {
'name':'Grey Li',
'gender':'male'
}
response = make_response(json.dumps(data)) # 将字典序列化为json字符串
response.mimetype = 'application/json'
return response
这里也可以使用jsonify()函数进行数据的序列化
from flask import jsonify
@app.route('/foo2')
def foo2():
return jsonify(name='grey Li',gender='male')