Django Rest framework Request

[Django Rest framework文檔翻譯]-Request

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

請求解析

REST framework的Request對象提供了靈活的請求解析,讓你可以像一般處理普通form數據一樣處理帶JSON數據或者媒體類型的request。

.data

request.data返回request body解析后的內容。這類似于標準的request.POSTrequest.FILES屬性除了下面幾個區別:

  • 它包含了所有解析后的內容,包括文件類型和非文件類型的輸入
  • 它支持除了POST類型以外的其他HTTP方法的內容解析,意味著你可以訪問PUTPATCH類型reqeust的內容。
  • 它提供REST framework靈活的請求解析,而不單單支持from數據。舉例說你可以像處理form數據一樣處理JSON數據。
    詳細信息,參考parsers documentation

.query_params

request.query_params?是比request.GET更貼切的一個同義詞
為了清楚起見,在你的代碼里,我們推薦你使用request.query_params來代替Django’s標準request.GET。這樣做可以讓你的代碼更準確和明了-任何HTTP方法類型都可能包含查詢信息,不緊緊是GET請求。

.parsers

APIView類或者@api_view?裝飾器將保證這個屬性會被自動賦予一系列的Parser實例,基于這個view的parser_class集合或者基于DEFAULT_PARSER_CLASSES設置
你一般不會訪問這個屬性


如果一個客戶端發送了有缺陷的內容,那么訪問request.data也許會引起ParseError。默認情況下REST framework的APIView類或者@api_view裝飾器將會捕獲這個錯誤然后返回400 Bad Request的response

如果一個客戶端發送了一個包含有不能解析的content-type那么將會引起一個UnsupportedMediaType異常,這個異常將會被捕獲并且返回一個415 Unsupported Media Type response


內容協商

request暴漏了一些屬性是允許你去判斷內容協商階段的結果。這將允許你去實現一些行為比如給不同的媒體類型選擇一個不同的序列化方案

.accepted_renderer

內容協商階段選出來的渲染器實例

.accepted_media_type

是一個字符串用來表明內容協商階段接受的媒體類型


驗證

REST framework提供了靈活的,針對每一個請求的驗證,可以給你的這樣的能力:

  • 不同部分的API使用不同的驗證策略
  • 支持使用多個驗證策略
  • 同時提供即將到來的request相關的user和token信息

.user

request.user一般返回django.contrib.auth.models.User的一個實例,盡管它的行為取決于你使用的驗證策略。
如果request沒有驗證,那么request.user的默認值的jdango.contrib.auth.models.AnonymousUser
更多信息,查看authentication documentation

.auth

request.auth返回任何額外的授權上下文。reqeust.auth的具體行為取決于使用的認證策略,但一般來說它會是reqeuset請求授權得到token的實例。
更多詳細信息請看?authentication documentation

.authenticators

APIView類或者@api_view裝飾器將會保證這個屬性被自動設置為一列Authentication的實例,基于authentication_classes集合或者基于DEFAULT_AUTHENTICATORS設置。
你一般不需要訪問這個屬性


瀏覽器增強

REST framework支持一些瀏覽器增強比如說是基于瀏覽器的PUT,PATCH和DELETE表單

.method

request.method返回請求的HTTP方法大寫的字符串表達。
基于瀏覽器PUT,PATCH,DELETE表單被支持

.content_type

request.content_type,返回一個代表HTTP請求body媒體類型的字符串對象,或者一個空串如果沒有媒體類型提供的話。你一般不需要直接訪問請求的內容類型,因為一般來說你會基于REST框架的默認解析行為
如果你確實需要訪問request的媒體類型,你應該使用.content_type屬性優先于使用request.META.get('HTTP_CONTENT_TYPE'),因為它提供基于瀏覽器的非form內容。

.stream

request.stream返回request body的流的展現方式
你一般不會直接訪問request的內容,因為你一般會基于REST 框架的默認請求解析實現


標準HttpRequest屬性

因為REST framework的Request類擴展自Django’s的HttpRequest,所有其他的標準的屬性和方法都是可用的。舉例來說request.METArequest.session字典都和之前一樣
注意因為實現的原因,Request類不是直接繼承子HttpRequest類,而是使用組合擴展了它

.version

返會版本

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/454416.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454416.shtml
英文地址,請注明出處:http://en.pswp.cn/news/454416.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python去停用詞用nltk_【NLTK】安裝和使用NLTK分詞和去停詞

黃聰:PythonNLTK自然語言處理學習(一):環境搭建 http://www.cnblogs.com/huangcong/archive/2011/08/29/2157437.html 安裝NLTK可能出現的問題: 1. pip install ntlk 2. 如果遇到缺少stopwords報錯如下:&am…

JavaScript知識概要

JavaScript 1.簡介 JavaScript簡介: JS是運行在瀏覽器端的一門腳本語言,一開始主要用來做瀏覽器驗證,但現在功能已經不止于此。 所謂腳本語言就是指,代碼不需要編譯,直接運行,并且讀入…

計算機文檔xsl,XSL-FO 文檔

XSL-FO 文檔XSL-FO 文檔XSL-FO 文檔是帶有輸出信息的 XML 文件。XSL-FO 文檔存儲在以 .fo 或 .fob 為文件擴展名的文件中。您也可以把 XSL-FO 文檔存儲為以 .xml 為擴展名的文件,這樣做的話可以使 XSL-FO 文檔更易被 XML 編輯器存取。XSL-FO 文檔結構XSL-FO 的文檔結…

vue項目cordova打包的android應用

準備工作nodejs、cordova、AndroidStudio這些在上一篇文章中已經說過了,這里就不重復說明。以此文記錄vue項目用cordova打包移動app的方法。 1.創建一個cordova項目,如創建一個名為testapp的工程:cordova create testapp 2.添加安卓平臺 cord…

H.264視頻開發---代碼移植

基于DSP系統開發的視頻編解碼系統,國內幾乎都是走的移植,優化的路線,并且移植的代碼,都是開源的。畢竟花費大量的人力,物力去開發一套自己的代碼,并不見得比一些成熟的開源代碼效率更高,健壯性更…

Django REST framework 源碼解析

先放圖,放圖說話,可能有點長 主流程 這個顏色 從setting導入默認數據流程是 這個顏色 主流程大概流程寫一下:as_view 實際返回view,并把參數{"get":"list","post":"create"}傳遞給view…

-9 逆序輸出一個整數的各位數字_leetcode兩數相加(大整數相加)

題目來源于leetcode第二題兩數相加。題目描述給出兩個非空的鏈表用來表示兩個非負的整數。其中,它們各自的位數是按照逆序的方式存儲的,并且它們的每個節點只能存儲一位數字。如果,我們將這兩個數相加起來,則會返回一個新的鏈表來…

計算機如何添加管理員權限,電腦使用代碼如何添加管理員權限

我們在使用電腦運行某些軟件的時候,可能需要用到管理員權限才能運行,通常來說直接點擊右鍵就會有管理員權限,但最近有用戶向小編反饋,在需要管理員權限的軟件上點擊右鍵沒有看到管理員取得所有權,那么究竟該如何才能獲…

mysql選擇數據庫創建數據庫

MySQL 選擇數據庫 在你連接到 MySQL 數據庫后,可能有多個可以操作的數據庫,所以你需要選擇你要操作的數據庫。 從命令提示窗口中選擇MySQL數據庫 在 mysql> 提示窗口中可以很簡單的選擇特定的數據庫。你可以使用SQL命令來選擇指定的數據庫。 實例 以下…

英語面試技巧以及準備工作

如果你提前知道了電話面試的時間,則可以在面試時把簡歷、coverletter放在你旁邊的桌子上,直接運用里面的句子回答問題。一些基本的問題,你可以事先準備好答案。通常,在電話英語面試的時候會提道:  please tell me som…

sql注入問題

${}拼接sql,會引起sql注入,sql注入例如: select * from user where name like ‘%’ or 11 or ‘%’; 這種情況下,論name為什么都可以執行 轉載于:https://www.cnblogs.com/mengyinianhua/p/7649325.html

Python 面向對象之雙下方法,內置函數

isinstance和issubclass isinstance(obj,cls) # 檢查是否obj是否是類 cls 的對象 class Foo(object):passobj Foo()isinstance(obj, Foo) # ture issubclass(sub, super) # 檢查sub類是否是 super 類的派生類 class Foo(object):passclass Bar(Foo):passissubclass…

teechart繪制實時曲線_快速學會CAD繪制傳輸線路圖紙

一工具CAD工程設計軟件二方法和步驟萬事開頭難,遇到不懂的知識剛開始都有畏難的情緒,只要有決心學習,誠心想學會一項技能,那學會學好它就只是時間問題了。我們常常面臨時間緊、需要快速入門甚至熟練地解決工作中實際情況的問題&am…

彝文計算機,試論計算機彝文字符編碼的轉換.pdf

試論計算機彝文字符編碼的轉換.pdf第17卷 第1期 云南民族大學學報(自然科學版) V01.17 No.12008年1月 Journal of Yunnan Nationalities University(Natural Sciences Edition) Jan.2o08試論計算機彝文字符編碼的轉換李金發(紅河學院人文學院…

ActiveMQ(07):ActiveMQ結合Spring開發--建議

1、Camel框架支持大量的企業集成模式,可以大大簡化集成組件間的大量服務和復雜的消息流。而Spring框架更注重簡單性,僅僅支持基本的最佳實踐。 2、Spring消息發送的核心架構是JmsTemplate,隔離了像打開、關閉Session和Producer的繁瑣操作&…

使用ajax獲取用戶所在地的天氣

1.要獲取用戶歸屬地的天氣&#xff0c;首先得獲取用戶所在的市區&#xff0c; 這里先獲取用戶的IP&#xff0c;通過IP獲取IP的歸屬地&#xff0c;從而得到用戶 地址。 獲取客戶端ip: js: <scripttype"text/javascript" src"http://pv.sohu.com/cityjson?ieu…

Python 之協程

之前我們學習了線程、進程的概念&#xff0c;了解了在操作系統中進程是資源分配的最小單位,線程是CPU調度的最小單位。按道理來說我們已經算是把cpu的利用率提高很多了。但是我們知道無論是創建多進程還是創建多線程來解決問題&#xff0c;都要消耗一定的時間來創建進程、創建線…

ip變換器蘋果系統_加密鎖能為高鐵做什么?鐵路電力變換器系統告訴您

代表國之重器的高鐵&#xff0c;是怎樣保護他們在軟件上投資的專有技術不被仿冒、逆向工程和篡改呢&#xff1f;與一般的軟件保護加密不同&#xff0c;高鐵運行中的實時控制器對物理環境有著嚴苛的要求&#xff0c;如鐵路電力變換器系統&#xff0c;須滿足典型工業應用的擴展溫…

華為服務器ibmc怎么裝系統,華為服務器安裝操作系統

《華為服務器安裝操作系統》由會員分享&#xff0c;可在線閱讀&#xff0c;更多相關《華為服務器安裝操作系統(11頁珍藏版)》請在人人文庫網上搜索。1、華為服務器安裝操作系統 1把網線接到服務器管理口上&#xff0c;2288服務器管理口在服務器背后中下 部位置&#xff0c;有Mg…

英語面試(自我介紹,電話面試..)

大凡找工作的人&#xff0c;都有對面試的擔心&#xff0c;而英語面試最令人頭痛。面試氣氛總是緊張的&#xff0c;一緊張就容易出錯&#xff0c;中文“臺詞”都會結巴&#xff0c;何況英語&#xff01; 可俗話說&#xff0c;養兵千日&#xff0c;用兵一時&#xff0c;學了那么多…