国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

Django drf Requests(請求)

2021-01-05 11:44 更新

Requests(請求)

如果你正在做基于REST的Web服務(wù)...你最好忽略request.POST。— Malcom Tredinnick, Django developers group

REST framework的Request類擴(kuò)展了標(biāo)準(zhǔn)的HttpRequest,添加對REST framework的靈活請求解析和請求身份驗(yàn)證的支持。

Request parsing(請求解析)

REST framework的請求對象提供靈活的請求解析,允許你以與通常處理表單數(shù)據(jù)相同的方式使用JSON數(shù)據(jù)或其他媒體類型處理請求。

.data

request.data 返回請求正文的解析內(nèi)容。這與標(biāo)準(zhǔn)的 request.POST 和 request.FILES 屬性類似,除了下面的:

  • 它包括所有解析的內(nèi)容, 包括 文件或非文件 輸入。
  • 它支持解析除POST之外的HTTP方法的內(nèi)容,這意味著你可以訪問PUT和PATCH請求的內(nèi)容。
  • 它支持REST framework靈活的請求解析,而不僅僅支持表單數(shù)據(jù)。 例如,你可以以與處理傳入表單數(shù)據(jù)相同的方式處理傳入的JSON數(shù)據(jù)。

更多詳細(xì)信息請參閱parsers documentation.

.query_params

request.query_params是request.GET的一個(gè)更準(zhǔn)確的同義詞。

為了讓你的代碼清晰明了, 我們建議使用 request.query_params 而不是Django標(biāo)準(zhǔn)的request.GET。這樣做有助于保持代碼庫更加正確和明了——任何HTTP方法類型可能包括查詢參數(shù),而不僅僅是GET請求。

.parsers

APIView類或@api_view裝飾器將根據(jù)view中設(shè)置的parser_classes集合或基于DEFAULT_PARSER_CLASSES設(shè)置,確保此屬性自動(dòng)設(shè)置為Parser實(shí)例列表。

你通常并不需要訪問這個(gè)屬性。

Note: 如果客戶端發(fā)送格式錯(cuò)誤的內(nèi)容,則訪問request.data可能會(huì)引發(fā)ParseError。默認(rèn)情況下REST framework的 APIView類或@api_view裝飾器將捕獲錯(cuò)誤并返回400 Bad Request響應(yīng)。

如果客戶端發(fā)送具有無法解析的內(nèi)容類型的請求,則會(huì)引發(fā) UnsupportedMediaType 異常, 默認(rèn)情況下會(huì)捕獲該異常并返回 415 Unsupported Media Type 響應(yīng)。

Content negotiation(內(nèi)容協(xié)商)

請求提供了一些屬性允許你確定內(nèi)容協(xié)商階段的結(jié)果。這允許你實(shí)現(xiàn)具體的行為,例如為不同的媒體類型選擇不用的序列化方案。

.accepted_renderer

由內(nèi)容協(xié)商階段選擇的render實(shí)例。

.accepted_media_type

由內(nèi)容協(xié)商階段接受的媒體類型的字符串。

Authentication(認(rèn)證)

REST framework 提供了靈活的,每次請求的驗(yàn)證,讓你能夠: * 對API的不同部分使用不同的身份驗(yàn)證策略。 * 支持使用多個(gè)身份驗(yàn)證策略。 * 提供與傳入請求相關(guān)聯(lián)的用戶和令牌信息。

.user

request.user 通常返回一個(gè) django.contrib.auth.models.User 實(shí)例, 盡管該行為取決于所使用的的認(rèn)證策略。

如果請求未認(rèn)證則 request.user 的默認(rèn)值為 django.contrib.auth.models.AnonymousUser的一個(gè)實(shí)例。

.auth

request.auth 返回任何其他身份驗(yàn)證上下文。 request.auth 的確切行為取決于所使用的的認(rèn)證策略,但它通??梢允钦埱蟊徽J(rèn)證的token的實(shí)例。

如果請求未認(rèn)證或者沒有其他上下文,則 request.auth 的默認(rèn)值為 None.

.authenticators

APIView 類或 @api_view 裝飾器將根據(jù)在view中設(shè)置的 authentication_classes 或基于DEFAULT_AUTHENTICATORS 設(shè)置,確保此屬性自動(dòng)設(shè)置為 Authentication 實(shí)例的列表。

你通常并不需要訪問此屬性。

Browser enhancements(瀏覽器增強(qiáng))

REST framework 支持一些瀏覽器增強(qiáng)功能,例如基于瀏覽器的 PUT, PATCH 和 DELETE 表單。

.method

request.method 返回請求的HTTP方法的 大寫 字符串表示形式。

透明地支持基于瀏覽器的 PUT, PATCH 和 DELETE 表單。

.content_type

request.content_type 返回表示HTTP請求正文的媒體類型的字符串對象,如果未提供媒體類型,則返回空字符串。

你通常不需要直接訪問請求的內(nèi)容類型,因?yàn)槟阃ǔ⒁蕾囉赗EST framework的默認(rèn)請求解析行為。

如果你確實(shí)需要訪問請求的內(nèi)容類型,你應(yīng)該使用 .content_type 屬性,而不是使用 request.META.get('HTTP_CONTENT_TYPE'), 因?yàn)樗鼮榛跒g覽器的非表單內(nèi)容提供了透明的支持。

.stream

request.stream 返回一個(gè)表示請求主體內(nèi)容的流。

你通常不需要直接訪問請求的內(nèi)容類型,因?yàn)槟阃ǔ⒁蕾囉赗EST framework的默認(rèn)請求解析行為。

Standard HttpRequest attributes(標(biāo)準(zhǔn)HttpRequest屬性)

由于 REST framework 的 Request 擴(kuò)展了 Django的 HttpRequest, 所以所有其他標(biāo)準(zhǔn)屬性和方法也是可用的。例如 request.META 和 request.session 字典正??捎?。

請注意,由于實(shí)現(xiàn)原因, Request 類并不會(huì)從 HttpRequest 類繼承, 而是使用合成擴(kuò)展類。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號