Flask之响应报文

响应在Flask中使用Response对象表示,响应报文中的大部分由服务器来处理,大多数情况,我们只负责返回主体。
Flask会调用make_response()方法将视图函数转换为响应对象,这里包含:响应主体、状态码、首部字段,其中首部字段为字典。

普通的响应

普通的响应只包含响应主体,且我们可以指定状态码

from flask import Flask, request, redirect

app = Flask(__name__)

@app.route('/hello3')
def hello3():
    return '

Hello, Flask!

', 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')

你可能感兴趣的:(Flask之响应报文)