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'