flask返回數據類型

服務器這種後臺返回的數據只能是string,json或者是文件類型,對應Html的解析文件類型json

沒法返回自定義的元組,只能返回規定好的元組,說白了只第一個元素有效flask

全部返回前臺的內容其實都應該是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就是開發者工具,而後刷新頁面:

 

 

 

 

 

元組數組

 

demo.py(函數返回多個值(元組)):

# 定義函數,有多個返回值(返回元組)
def measure():
    """測量溫度和溼度"""
 
    print("測量開始...")
    temp = 39
    wetness = 50
    print("測量結束...")
 
    # 元組-能夠包含多個數據,所以可使用元組讓函數一次返回多個值
    # 若是函數返回的類型是元組,小括號能夠省略
    # return (temp, wetness)
    return temp, wetness  # 小括號能夠省略
 
# 元組
result = measure()
print(result)  # (39, 50)
 
# 須要單獨的處理溫度或者溼度 - 不方便
print(result[0])  # 39
print(result[1])  # 50
 
 
# 若是函數返回的類型是元組,同時但願單獨的處理元組中的元素
# 可使用多個變量,一次接收函數的返回結果
# 注意:使用多個變量接收結果時,變量的個數應該和元組中元素的個數保持一致
gl_temp, gl_wetness = measure()  # 接受函數多個返回值
 
print(gl_temp)  # 39
print(gl_wetness)  # 50
demo.py(利用元組交換變量值):

a = 6
b = 100
 
# 解法1:-使用其餘變量
# c = a
# a = b
# b = c
 
# 解法2:-不使用其餘的變量
# a = a + b
# b = a - b
# a = a - b
 
# 解法3:-Python 專有
# a, b = (b, a)
# 提示:等號右邊是一個元組,只是把小括號省略了
a, b = b, a
 
print(a)  # 100
print(b)  # 6
 
 ———————————————— 
版權聲明:本文爲CSDN博主「houyanhua1」的原創文章,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處連接及本聲明。
原文連接:https://blog.csdn.net/houyanhua1/article/details/83999767
相關文章
相關標籤/搜索