8_关于flask中的响应Response

关于响应 (Response)

视图函数中的返回值会被自动转换为一个响应对象,在Flask中的转换逻辑如下:

  • 如果返回的是一个合法的响应对象,则直接返回。

    from flask import Flask, Response # 因为在flask中导入过了Response, 所以Response可以直接从此处导入
    @app.route('/')
    def index():
        return Response('首页')
    
  • 如果返回的是一个字符串,那么Flask会自动创建一个werkzeug.wrappers.Response对象,Response对象将该字符串作为主体,状态码为200,MIME类型为text/html, 然后返回该Response对象.

    @app.route('/')
    def index():
        # return '首页'   # 返回一个字符串,转换逻辑如下:
        response = Response('首页', status=200, mimetype='text/html; charset=utf-8')
        return response
    
  • 如果返回的是一个元组,元组中的数据类型是(response, status, headers)。status值会覆盖默认的200的状态码,headers可以是列表或者字典,作为额外的参数头.

    @app.route('/list/')
    def my_list():
        # 三个参数,可以不写全
        # return 'list', 200
        return ('list', 200)
        return ('list', 200, {'name': 'cheng'})
    
     	# return ('list2', 300, {'name': 'cheng'})
        # return 'list2', 300, {'name': 'cheng', 'age': 18, 'sex': 'man', 'country': 'china'}
        # return 'list2', 200, [('name', 'cheng'), ('age', 18)]
    
  • 如果以上都不满足,Flask会假设返回值是一个合法的WSGI应用程序,并通过Response.force_type(rv, request, environ转换为一个请求对象.

原文地址:https://www.cnblogs.com/nichengshishaonian/p/11631676.html