基礎(chǔ)
.data 解析后的內(nèi)容,和POST和FILES類似,但
獲得所有方法的請(qǐng)求體
支持文件和非文件
支持多種數(shù)據(jù)類型 例如json
.query_params 和GET類似,但這種寫法更明確
獲得所有方法的查詢字符串
.parsers 設(shè)置為Parser的列表,根據(jù)parser_class,一般不需要使用該屬性
(如果用戶輸入的內(nèi)容不正確則返回400 如果用戶輸入的媒體類型不支持則返回415)
內(nèi)容協(xié)商
.accepted_renderer 用于響應(yīng)的Render的實(shí)例
.accepted_media_type 用于響應(yīng)的媒體類型
認(rèn)證
user auth authenticators
瀏覽器支持
.method 大寫的當(dāng)前請(qǐng)求方法名稱
.content_type 請(qǐng)求體的內(nèi)容類型
.stream 返回一個(gè)代表請(qǐng)求體的流,一般不使用
源碼實(shí)現(xiàn)
初始化
接收參數(shù)request,parsers=None,authenticators=None,negotiator=None,parser_context=None
接受的request是構(gòu)建好的django的request
parser_context如果從APIView中獲得則為一個(gè)包含了view args kwargs的dict
另外增加了request encoding
content_type
拿META中的
stream
通過(guò)_stream緩存
如果還沒(méi)開(kāi)始讀取,通過(guò)django的原生request
如果已經(jīng)讀取過(guò),則使用django的原生request的body
關(guān)于django的原生request,實(shí)際為WSGIRequest
本屬性可能不會(huì)直接使用,在獲取data時(shí)通過(guò)parse也會(huì)調(diào)用到
query_params
拿django的原生request的GET
data
調(diào)用_load_data_and_files,在其中調(diào)用_parse
user
調(diào)用_authenticate,成功后設(shè)置_authenticator user auth,失敗則調(diào)用_not_authenticated,設(shè)置user為AnonymousUser auth為None
auth
見(jiàn)user
successful_authenticator
見(jiàn)user,其為_(kāi)authenticator的包裝
POST
見(jiàn)data
FILES
見(jiàn)data