标签:xiaomi sgi super mime类型 ati nbsp alt 状态码 environ
视图函数的返回值会被自动转换为一个响应对象,Flask的转换逻辑如下:
可以使用make_response函数来创建Response对象,这个方法可以设置额外的数据,比如cookie、header信息等
rom flask import Flask
from flask import make_response
app=Flask(__name__)
@app.route(‘/about/‘)
def about():
return make_response(‘about page‘)
@app.route(‘/about/‘)
def about():
return ‘about page‘
from werkzeug.wrappers import Response
app=Flask(__name__)
@app.route(‘/about/‘)
def about():
resp=Response(response=‘about page‘,status=200,content_type=‘text/html;charset=utf8‘)
return resp
from flask import Flask
from flask import make_response
from werkzeug.wrappers import Response
app=Flask(__name__)
@app.route(‘/about/‘)
def about():
return ‘about page‘,200,{‘server‘:‘xiaomingyan‘}
if __name__ ==‘__main__‘:
app.run(host=‘127.0.0.1‘,port=8080) # 运行,指定监听地址为127.0.0.1:8080
我们尝试返回一个字典,字典不满足上面的三个条件,因此进入第4步,但是字典也不是一个合法的WSGI应用程序,因此不是一个可请求对象。产生异常!
@app.route(‘/about/‘) def about(): return {‘name‘:‘heboan‘}
如果我们想把所有的URL都发送 JSON数据,那么我们就可以执行响应
自定义响应必须满足3个条件
1、必须继承Response类
2、实现类方法force_type(cls, response, environ=None)
3、必须制定app.response_class为你定义的Response
我们可以定义一个叫做JSONResponse的类来代替Flask自带的Response类
#coding=utf-8 from flask import Flask from werkzeug.wrappers import Response from flask import jsonify app=Flask(__name__) class JSONResponse(Response): default_mimetype = ‘application/json‘ @classmethod def force_type(cls, response, environ=None): if isinstance(response,dict): response=jsonify(response) return super(JSONResponse,cls).force_type(response,environ) app.response_class=JSONResponse @app.route(‘/about/‘) def about(): return {‘name‘:‘xiaomingyan‘} if __name__ ==‘__main__‘: app.run(host=‘127.0.0.1‘,port=8080) # 运行,指定监听地址为127.0.0.1:8080
2019-01-1717:42
UP UP!!!
标签:xiaomi sgi super mime类型 ati nbsp alt 状态码 environ
原文地址:https://www.cnblogs.com/xinbaby2358/p/10283539.html