2.5.4响应

Posted 三度

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2.5.4响应相关的知识,希望对你有一定的参考价值。

 

Flask 调用视图函数后,会将其返回值作为响应的内容。大多数情况下,响应就是一个简单的字符串,作为 html 页面回送客户端。但 HTTP 协议需要的不仅是作为请求响应的字符串。HTTP 响应中一个很重要的部分是状态码,Flask 默认设为 200,这个代码表明请求已经被成功处理。

如果视图函数返回的响应需要使用不同的状态码,那么可以把数字代码作为第二个返回值,添加到响应文本之后。例如,下述视图函数返回一个 400 状态码,表示请求无效:

@app.route(\'/\')

def index():

    return \'<h1>Bad Request</h1>\', 400

 

视图函数返回的响应还可接受第三个参数,这是一个由首部(header)组成的字典,可以添加到 HTTP 响应中。一般情况下并不需要这么做

如果不想返回由 1 个、2 个或 3 个值组成的元组,Flask 视图函数还可以返回 Response 对象。make_response() 函数可接受 1 个、2 个或 3 个参数(和视图函数的返回值一样) ,并返回一个 Response 对象。有时我们需要在视图函数中进行这种转换,然后在响应对象上调用各种方法,进一步设置响应。下例创建了一个响应对象,然后设置了 cookie:

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

 

有一种名为重定向的特殊响应类型。这种响应没有页面文档,只告诉浏览器一个新地址用以加载新页面。重定向经常在 Web 表单中使用,第 4 章会进行介绍。

重定向经常使用 302 状态码表示,指向的地址由 Location 首部提供。重定向响应可以使用3 个值形式的返回值生成,也可在 Response 对象中设定。不过,由于使用频繁,Flask 提供了 redirect() 辅助函数,用于生成这种响应:

#!/usr/bin/env python

#_*_ coding:utf-8 _*_

 

from flask import Flask

from flask import request

from flask import make_response

from flask import redirect

 

app = Flask(__name__)

 

@app.route("/")

def index():

return redirect("http://www.baidu.com")

 

@app.route("/user/<name>")

def user(name):

return "<h1>Hello,%s</h1>" % name

 

if __name__ == \'__main__\':

app.run(debug=True)

说明:访问http://127.0.0.1:5000会跳转到百度首页

 

###如下这个暂未明白###

还有一种特殊的响应由 abort 函数生成,用于处理错误。在下面这个例子中,如果 URL 中动态参数 id 对应的用户不存在,就返回状态码 404:

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 不会把控制权交还给调用它的函数,而是抛出异常把控制权交给 Web 服务器。

以上是关于2.5.4响应的主要内容,如果未能解决你的问题,请参考以下文章

性能测试性能测试之性能测试指标详解(性能指标CPU内存负载磁盘)

性能测试性能测试之性能测试指标详解(性能指标CPU内存负载磁盘)

http之响应和响应码介绍

HttpServletResponse ServletResponse 返回响应 设置响应头设置响应正文体 重定向 常用方法 如何重定向 响应编码 响应乱码

响应式编程与响应式系统

HttpServletResponse ServletResponse 返回响应 设置响应头设置响应正文体 重定向 常用方法 如何重定向 响应编码 响应乱码