重定向与抛出错误
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实例来进行详细的设置。