Response返回值详解

return的信息只能处理 ,元组,字符串,和非Response对象

如果是字典,列表,可以得自定义Response这个类,就可以用了。

from flask import Flask,Response,jsonify
import json

app = Flask(__name__)

@app.route('/')
def index():
    return 'xxxxx'

@app.route('/list1/')
def list1():
    return '这是一个字符串'#可以显示


@app.route('/list2/')
def list2():
    return '如果返回的是元组,有3个参数(响应体,状态吗,头部信息),必须写两个',200,{'X-NAME':'zhiliao'}

# @app.route('/list3/')
# def list3():
#     return {'a': 1,'b': 2,'b': '3'}#如果是字典,直接报错

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


#自定义response

#第一步,导入Response,Jsonfy,json

#第二步,继承Response,重写转换的类

#第三步,用app初始化

from flask import Flask,Response,jsonify,render_template
import json


app = Flask(__name__)

# 将视图函数中返回的字典,转换成json对象,然后返回
# restful-api
class JSONResponse(Response):

    @classmethod
    def force_type(cls, response, environ=None):
        #只有返回的对象不是元组,字符串,返回对象的时候才能调用这个类
        if isinstance(response,dict):
            response = jsonify(response)
        return super(JSONResponse, cls).force_type(response, environ)

app.request_class=JSONResponse

@app.route('/')
def index():
    return '别急,今年的目标是积累技术'

@app.route('/list1/')
def list1():
    return '这是一个字符串'#可以显示


@app.route('/list2/')
def list2():
    return '如果返回的是元组,有3个参数(响应体,状态吗,头部信息),必须写两个',200,{'X-NAME':'zhiliao'}

@app.route('/list3/')
def list3():
     return {'username': 'zhiliao', 'age': 18}


if __name__ == '__main__':
    app.run(debug=True,port=8000)
不知道为什么会报错,'JSONResponse' object has no attribute 'environ'


 

猜你喜欢

转载自blog.csdn.net/hebi123s/article/details/81776603