设置响应信息的方法

 1.  返回自定义的响应头,有两种方式:

   (1)  第一种是:视图函数return的时候,使用元组,返回自定义的信息

          返回的时候的状态码可以自定义信息:"状态码   自定义的信息", 

         例如: 可以把下面代码中的400,改成自定义的状态码:   "666  custom info"

from flask import Flask

app = Flask(__name__)


@app.route("/index")
def index():、
    """
        1. 使用元组,返回自定义的响应信息
        返回响应体,状态码,响应头
        return 多个值时,就会是一个元组的形式
    """
    """
        除了用字典的形式,也可以用字典的形式
        return "index page", 400, {"Itcast": "python", "City": "beijing"}
    """
    return "index page", 400, [("Itcast", "python"), ("City", "beijing")]


if __name__ == '__main__':
    app.run(debug=True)

访问网页后,可以看到自定义的响应头信息,  当然可以设置标准的响应头信息,根据需求,这是通过元组的方式

python flask 返回中文乱码 flask 返回状态码_flask返回json数据

 注意,  在return值的时候

       可以只给前端传响应体和状态码,不传响应头

        但不可以只传响应体和响应头,即有响应头,必须要有状态码

它是有顺序的,第一个响应体,第二个状态码,第三个响应头,可以从后面省但不可从前面省

   (2) 第二种方式:  使用make_response 来构造响应信息(从flask中导入make_response)

          resp =  make_response("响应体")

          resp.status = "状态码,可以是自定义的状态码"

          resp.headers["键"] = "值"   #  通过字典的形式设置响应头

from flask import Flask, make_response

app = Flask(__name__)


@app.route("/index")
def index():

    # 2. 使用make_response 来构造响应信息
    resp = make_response("index page2")  # 响应体数据
    resp.status = "999 itcast"  # 状态码
    resp.headers["City"] = "ShangHai"  # 通过字典的形式添加响应头
    return resp


if __name__ == '__main__':
    app.run(debug=True)

 访问网页看到的结果是一样的

python flask 返回中文乱码 flask 返回状态码_flask返回json数据_02

 2. 给前端返回json数据:

     1. 通过传统的方式,先构造一个字典,然后经过json模块转化为字符串

        ,视图函数返回字符串以及修改响应头的类型接口

      2.通过flask中的 jsonify来进行返回

          有两种方式  第一种是把构造好的字典直接传进去返回即可   return jsonify(构造的字典)

                              第二种是直接在jsonify() 里面进行构造      return jsonify(键=值,键=值) ,其效果是一样的

from flask import Flask, jsonify
import json

app = Flask(__name__)


@app.route("/index")
def index():
    """向前端返回json类型的数据"""
    data = {
        "name": "python",
        "age": 18
    }
    """
        传统的方式去传递
        # json.dumps(字典)  将Python的字典转换为json的字符串
        # json.loads(字符串)  将字符串转换为Python中的字典
        json_str = json.dumps(data)
        # 改变,响应头的类型
        return json_str,200,{"Content-Type":"application/json"}
    """
    '''
        jsonify()的使用
        1.jsonify()帮助转为json数据,并设置响应头 Content-Type 为 application/json
        2. 可以不用提前构造好字典,直接返回,结果是一样的
            return jsonify(City="Beijing",age=20)
    '''
    return jsonify(data)


if __name__ == '__main__':
    app.run(debug=True)

访问网页后:

   

python flask 返回中文乱码 flask 返回状态码_Flask框架_03