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