Flask 關(guān)于響應(yīng)

2021-08-10 11:45 更新

視圖函數(shù)的返回值會(huì)被自動(dòng)轉(zhuǎn)換為一個(gè)響應(yīng)對(duì)象。如果返回值是一個(gè)字符串, 它被轉(zhuǎn)換為該字符串為主體的、狀態(tài)碼為 200 OK``的 、 MIME 類型是 ``text/html 的響應(yīng)對(duì)象。Flask 把返回值轉(zhuǎn)換為響應(yīng)對(duì)象的邏輯是這樣:

  1. 如果返回的是一個(gè)合法的響應(yīng)對(duì)象,它會(huì)從視圖直接返回。
  2. 如果返回的是一個(gè)字符串,響應(yīng)對(duì)象會(huì)用字符串?dāng)?shù)據(jù)和默認(rèn)參數(shù)創(chuàng)建。
  3. 如果返回的是一個(gè)元組,且元組中的元素可以提供額外的信息。這樣的 元組必須是 (response, status, headers) 的形式,且至少包含一 個(gè)元素。 status 值會(huì)覆蓋狀態(tài)代碼, headers 可以是一個(gè)列表或 字典,作為額外的消息標(biāo)頭值。
  4. 如果上述條件均不滿足, Flask 會(huì)假設(shè)返回值是一個(gè)合法的 WSGI 應(yīng)用 程序,并轉(zhuǎn)換為一個(gè)請(qǐng)求對(duì)象。

如果你想在視圖里操縱上述步驟結(jié)果的響應(yīng)對(duì)象,可以使用 make_response() 函數(shù)。

譬如你有這樣一個(gè)視圖:

@app.errorhandler(404)
def not_found(error):
    return render_template('error.html'), 404

你只需要把返回值表達(dá)式傳遞給 make_response() ,獲取結(jié) 果對(duì)象并修改,然后再返回它:

@app.errorhandler(404)
def not_found(error):
    resp = make_response(render_template('error.html'), 404)
    resp.headers['X-Something'] = 'A value'
    return resp
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)