Flask响应

一、正常响应

        Flask调动视图函数后,会将其返回值作为响应的内容。多数情况下,就是一个简单的字符串。但是HTTP协议需要的不仅仅是作为响应的字符串,另一个很重要的部分是状态码,Flask默认是200,表示成功处理了请求。但是如果不成功或者需要返回其它状态码怎么处理呢?可以把状态码作为返回的第二个参数,例:

@app.route('/')
def index():
    return '<h1>Bad Request</h1>', 400  # 400表示请求无效

二、封装响应

        除了状态码作为第二个参数返回外,返回的响应还可以接受第三个参数,这一个是响应头的字典。但这样看起来会很繁琐。Flask提供了特定的函数make_response()来统一处理返回值,函数可以接受之前之前的3个参数(不一定非要3个,2个1个都可以),返回一个和之前等效的相应对象。除此之外,还可以对响应进一步设置,比如设置cookie:

from flask import make_response

@app.route('/')
def index():
    response = make_response('<h1>Rookie!</h1>')
    response.set_cookie('Rookie', 'Believe Forever!')
    return response

        除了设置cookie外,还可以对响应对象进一步设置,响应对象常见的属性和方法如下:

Response常见属性或方法
属性或方法说明
status_code数字状态码
headers响应头
set_cookie()设置或添加一个cookie
delete_cookie()删除一个cookie
content_length响应主体的长度
content_type响应主体的类型
set_data()使用字符串或字节值设置响应
get_data()获取响应主体

三、重定向

        除了上述的响应,另外有一种特殊的响应类型。这种响应不返回页面内容,而是一个新的URL,用来重新定位到一个新页面。这种响应称为重定向,重定向的响应依赖于redirect()函数:

from flask import redirect

@app.route('/')
def index():
    return redirect('http://www.csdn.com')  # 状态码默认302

四、错误处理

        还有一种特殊的响应由abort()函数生成,用来处理错误,abort()会直接抛出异常:

from flask import abort

@app.route('/user/<id>')
def get_user(id):
    user = load_user(id)
    if not user:
        abort(404)  # 如果用户不存在,返回状态码404
    return '<h1>Hello, {}</h1>'.format(user.name)

参考资料:《Flask Web开发(第二版)》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值