摘要:只知道對(duì)字符串和二進(jìn)制類型進(jìn)行處理響應(yīng),其他位置類型比如字典都通過函數(shù)進(jìn)行處理,我們定義的如果返回的是類型那么用的函數(shù)轉(zhuǎn)換成內(nèi)容類型。
flask jsonify()函數(shù)返回json響應(yīng)
app = Flask(__name__) @app.route("/json/") def index(name): return jsonify({"Hello":name})
這時(shí)候content-Type=application/json
如果用python的json.dumps()函數(shù)
@app.route("/dumps/") def py(name): return json.dumps({"Hello":name})
這時(shí)候content-Type=text/html; charset=utf-8。如果選擇響應(yīng)的格式的話,return json.dumps({"Hello":name}),{"Content-Type":"application/json"} 那么content-Type=application/json就會(huì)響應(yīng)json格式
flask Response響應(yīng)類實(shí)際上來自Werzeug中的Response類,它繼承的是python的BaseResponse類
我們可以自定義響應(yīng)
>>> from flask import Flask >>> app = Flask(__name__) >>> app.make_response(("Hello word
",201))
make_response接收一個(gè)參數(shù),返回信息和狀態(tài)碼都在一個(gè)元組里
Response類定義:
class Response: charset = "utf-8" default_status = 200 default_mimetype = "text/html" def __init__(self, response=None, status=None, headers=None, mimetype=None, content_type=None, direct_passthrough=False): pass @classmethod def force_type(cls, response, environ=None): pass
我們可以自定義Response的子類,對(duì)他的行為做出一些改變,Flask類的response_class屬性可以改變響應(yīng)類。
from falsk import FLask, Response calss MyResponse(Response): default_mimetype = "application/xml" #修改內(nèi)容類型 class Myfalsk(Flask): response_class = Myresponse @app.route("/") def index(): return """""" 如果想要其他的內(nèi)容類型,可以設(shè)置Content-Type的值: return "{"name":"yang"}",{"Content-Type"="application/json"} Yang
重寫Response類來過濾Json格式的內(nèi)容格式:
class Myresponse(Response): @classmethod def force_type(cls, response, environ=None): if isinstance(response, dict): response = jsonify(response) return super().force(response, environ)
重寫forec_type來自定義對(duì)未知返回對(duì)象的處理。falsk只知道對(duì)字符串和二進(jìn)制類型進(jìn)行處理響應(yīng),其他位置類型比如字典都通過forec_type函數(shù)進(jìn)行處理,我們定義的如果返回的是dict類型那么用flask的jsonify函數(shù)轉(zhuǎn)換成json內(nèi)容類型。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/43663.html
摘要:在使用自定義響應(yīng)類的應(yīng)用中,和無法知道自定義類的細(xì)節(jié),所以它們使用標(biāo)準(zhǔn)響應(yīng)類來創(chuàng)建響應(yīng)。有了這個(gè)自定義響應(yīng)類,任何滿足格式要求的文檔都會(huì)自動(dòng)被標(biāo)記為內(nèi)容類型,而其他響應(yīng)則會(huì)繼續(xù)獲得默認(rèn)的內(nèi)容類型。 譯文鏈接:編程派 原文鏈接:Flask Web Development作者的博客 有翻譯或理解不對(duì)的地方,望大家指正! Flask框架中的響應(yīng)類,命名很貼切,叫Response。不過...
摘要:本文就主要針對(duì)一個(gè)應(yīng)用的運(yùn)行過程進(jìn)行簡(jiǎn)要分析,后續(xù)文章還會(huì)對(duì)框架的一些具體問題進(jìn)行分析。所有的請(qǐng)求處理過程,都會(huì)在這個(gè)上下文對(duì)象中進(jìn)行。和一些全局變量注意當(dāng)進(jìn)入這個(gè)上下文對(duì)象時(shí),會(huì)觸發(fā)。 相信很多初學(xué)Flask的同學(xué)(包括我自己),在閱讀官方文檔或者Flask的學(xué)習(xí)資料時(shí),對(duì)于它的認(rèn)識(shí)是從以下的一段代碼開始的: from flask import Flask app = Flask(...
摘要:我們知道響應(yīng)分為三個(gè)部分狀態(tài)欄版本狀態(tài)碼和說明頭部以冒號(hào)隔開的字符對(duì),用于各種控制和協(xié)商服務(wù)端返回的數(shù)據(jù)。 這是 flask 源碼解析系列文章的其中一篇,本系列所有文章列表: flask 源碼解析:簡(jiǎn)介 flask 源碼解析:應(yīng)用啟動(dòng)流程 flask 源碼解析:路由 flask 源碼解析:上下文 flask 源碼解析:請(qǐng)求 flask 源碼解析:響應(yīng) response 簡(jiǎn)介 在 f...
摘要:官方示例第一行類對(duì)象,這個(gè)無需解釋。請(qǐng)求對(duì)象的端點(diǎn)請(qǐng)求視圖函數(shù)的參數(shù)通過源碼的注釋我們可以知道,都只是對(duì)庫的進(jìn)行了一層包裝并加入一些屬性。接下來會(huì)有更多關(guān)于和相關(guān)文章放出來,敬請(qǐng)期待參考文檔項(xiàng)目源碼版本注釋版 Flask 是一個(gè) Python 實(shí)現(xiàn)的 Web 開發(fā)微框架, 有豐富的生態(tài)資源。本文從一段官方的示例代碼通過一步步打斷點(diǎn)方式解釋 Flask 內(nèi)部的運(yùn)行機(jī)制,在一些關(guān)鍵概念會(huì)...
摘要:最經(jīng)典的就是了暫時(shí)性重定向的狀態(tài)碼是,表示頁面暫時(shí)性被跳轉(zhuǎn),比如訪問一個(gè)需要權(quán)限的網(wǎng)址,如果當(dāng)前用戶沒有登錄,應(yīng)該重定向到登錄頁面。作為額外的消息頭如果以上的條件都不滿足,會(huì)假設(shè)返回值是一個(gè)合法的應(yīng)用程序,并通過轉(zhuǎn)換成一個(gè)請(qǐng)求對(duì)象。 flask基礎(chǔ)之一 hello world #從flask這個(gè)包中導(dǎo)入Flask這個(gè)類 #Flask這個(gè)類是項(xiàng)目的核心,以后的很多操作都是基于這個(gè)類的對(duì)象...
閱讀 2825·2023-04-25 20:06
閱讀 1446·2021-08-26 14:15
閱讀 2234·2021-08-12 13:27
閱讀 1772·2019-08-30 15:55
閱讀 3469·2019-08-30 13:20
閱讀 2826·2019-08-29 15:12
閱讀 3330·2019-08-29 15:06
閱讀 2858·2019-08-29 14:13