• 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 服务器。

  • 相关阅读:
    还是java中的编码问题
    java restful api
    编码方式
    LinkedHash
    Zoj 2562 More Divisors (反素数)
    spark复习总结03
    spark复习总结02
    spark复习总结01
    使用二进制解决一个字段代表多个状态的问题
    spark性能调优05-troubleshooting处理
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/6641131.html
Copyright © 2020-2023  润新知