從這一節開始,我就要開始講關於模板的知識了。先來學習一下Response
的相關知識。
所有返回前台的內容其實都應該是Response
的對象或者其子類,我們看到如果返回的是字符串直接可以寫成return u'字符串內容'
的形式,但是其實這個字符串也是經過了Response
包裝的:return Response(u'字符串')
我們看一段代碼:
# coding: utf-8
from flask import Flask, Response app = Flask(__name__) # type: Flask
app.debug = True
@app.route('/')
def hello_world(): return 'Hello World!'
@app.route('/login/')
def login(): return Response(u'login')
if __name__ == '__main__': app.run()
代碼里我新建了一個login
函數,返回的就是用Response
包裝后的字符串,訪問地址可以看到頁面打印了login
。
我們有時候需要返回數組、字典之類的數據,但是數組或者字典這些數據是不能直接return
的。這個時候怎么辦呢?答案就是你必須將數組或字典轉換成json
后再返回(這就是為什么我們做接口測試的時候傳參前用json.loads()
將字符串轉換成字典的原因了),因為json
就是一個字符串。
數組或字典轉換成json
的函數叫做jsonify
,你需要先導入from flask import jsonify
或者像船長下面代碼里寫的那樣,一下子導入好幾個庫:
# coding: utf-8
from flask import Flask, Response, jsonify app = Flask(__name__) # type: Flask
app.debug = True
@app.route('/')
def hello_world(): return 'Hello World!'
@app.route('/login/')
def login(): dict1 = {"name": "Warren"}
return jsonify(dict1)
if __name__ == '__main__': app.run()
上面代碼里`dict1`的數據類型是一個字典,我們通過`jsonify()`將其轉換成了`json`,就可以成功返回了,去頁面,看到:
除了字符串以外,還可以返回元組
,但是返回元組是有要求的,元組內容包括三個參數:response
、status_code
、headers
,其中:
-
response
指頁面打印信息,可以是字符串或Response
對象 -
status_code
指狀態碼,成功200
,找不到頁面404
等等 -
headers
指信息頭
# coding: utf-8
from flask import Flask, Response, jsonify app = Flask(__name__) # type: Flask
app.debug = True
@app.route('/')
def hello_world(): return 'Hello World!'
@app.route('/login/')
def login(): dict1 = {"name": "Warren"}
return jsonify(dict1)
@app.route('/set/')
def myset(): return u'返回元組', 200, {"name": "Warren"}
if __name__ == '__main__': app.run()
看上面代碼的myset
函數,我return
了一個元組(單個值的元組可以不寫括號,而且如果你加上括號,pycharm會有黃線提醒你remove redundant parentheless
,意思就是去掉多余的括號)。然后我們到頁面訪問/set/
這個頁面,打開F12就是開發者工具,然后刷新頁面:
然后看開發者工具:
這就是一個返回元組的例子了。
明天我們繼續Response
的知識。
請關注公眾號:自動化測試實戰