重定向与抛出错误

Flask提供了redirect()函数用于重定向,只需要在处理函数中返回redirect()的结果即可使访问重定向。

而抛出错误则是使用abort(status_code)函数。处理函数执行遇到abort()即终止处理函数的执行,直接抛出相应状态码的错误。在默认情况下,Flask在出现错误时会展现一个空白页。

要自定义错误页内容,Flask提供了@app.errorhandler()修饰器。这个修饰器接收一个HTTP状态码作为参数(整型值),用于指定被修饰函数所响应的错误类型。并且在函数返回时需要像以下示例中一样返回错误码。

from flask import render_template

@app.errorhandler(404)
def page_not_found(error):
	return render_template('404.html'), 404

注意返回语句最后的404,这在无错误处理函数中默认是200,由于那些处理函数默认返回200,所以不必书写,但错误处理函数中需要明确书写HTTP状态码。这是因为处理函数实际上返回的是一个元组类型值,这个元组类型是按照以下格式排布的(响应内容, HTTP状态码, 响应头信息)。响应头信息是一个字典类型的值,如果元组中第二个值是字典类型,那么HTTP状态码默认就为200,元祖中的第二个值就变为了响应头信息。

要手工建立Response实例可以用之前提到的make_response()函数,并且可以使用获得的Response实例来进行详细的设置。