——————————————————————前言————————————————————————————
Flask调用视图函数以后, 会将其返回值作为响应的内容。 本节我们来介绍4种响应。
第一种响应:
@app.route('/')
def index():
return '<h1>Bad Request</h1>', 400
实例的返回语句有两个返回值, 第一个是简单字符串, 第二个是状态码, 有时候也会有第三个参数——由响应报文首部组成的字典。
第二种响应:
from flask import make_response
@app.route('/')
def index():
response = make_response('<h1>This document carries a cookie!</h1>')
response.set_cookie('answer', '42')
return response
make_response函数可以接受1, 2或3个参数, 和第一种响应的返回值一样, 并且返回一个相应对象response。
我们可以用相应对象调用各种方法进一步设置响应, 该例设置了响应的cookie。
最后返回相应对象。
第三种响应:
from flask import redirect
@app.route('/')
def index():
return redirect('http://www.example.com')
该响应为重定向响应,重定向响应的状态码为302, 指向地址由Location首部提供。
重定向响应可以采取第一, 二种响应形式, 不过由于使用频繁, Flask提供了redirect()辅助函数, 其参数是重定向的网址。
第四种响应:
from flask import abort
@app.route('/user/<id>')
def get_user(id):
user = load_user(id)
if not user:
abort(404)
return '<h1>Hello, %s</h1>' %user.name
abort函数用于处理错误, 该例中如果用户不存在, 就返回状态码404.
注意:abort函数不会把控制权交回视图函数, 而是抛出异常把控制权交回web服务器。