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'