99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

Django drf Requests(請求)

2021-01-05 11:44 更新

Requests(請求)

如果你正在做基于REST的Web服務...你最好忽略request.POST?!?Malcom Tredinnick, Django developers group

REST framework的Request類擴展了標準的HttpRequest,添加對REST framework的靈活請求解析和請求身份驗證的支持。

Request parsing(請求解析)

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

.data

request.data 返回請求正文的解析內容。這與標準的 request.POST 和 request.FILES 屬性類似,除了下面的:

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

更多詳細信息請參閱parsers documentation.

.query_params

request.query_params是request.GET的一個更準確的同義詞。

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

.parsers

APIView類或@api_view裝飾器將根據view中設置的parser_classes集合或基于DEFAULT_PARSER_CLASSES設置,確保此屬性自動設置為Parser實例列表。

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

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

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

Content negotiation(內容協(xié)商)

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

.accepted_renderer

由內容協(xié)商階段選擇的render實例。

.accepted_media_type

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

Authentication(認證)

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

.user

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

如果請求未認證則 request.user 的默認值為 django.contrib.auth.models.AnonymousUser的一個實例。

.auth

request.auth 返回任何其他身份驗證上下文。 request.auth 的確切行為取決于所使用的的認證策略,但它通常可以是請求被認證的token的實例。

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

.authenticators

APIView 類或 @api_view 裝飾器將根據在view中設置的 authentication_classes 或基于DEFAULT_AUTHENTICATORS 設置,確保此屬性自動設置為 Authentication 實例的列表。

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

Browser enhancements(瀏覽器增強)

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

.method

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

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

.content_type

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

你通常不需要直接訪問請求的內容類型,因為你通常將依賴于REST framework的默認請求解析行為。

如果你確實需要訪問請求的內容類型,你應該使用 .content_type 屬性,而不是使用 request.META.get('HTTP_CONTENT_TYPE'), 因為它為基于瀏覽器的非表單內容提供了透明的支持。

.stream

request.stream 返回一個表示請求主體內容的流。

你通常不需要直接訪問請求的內容類型,因為你通常將依賴于REST framework的默認請求解析行為。

Standard HttpRequest attributes(標準HttpRequest屬性)

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

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


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號