DRF的解析器和渲染器


解析器

解析器的作用就是服務端接收客戶端傳過來的數據,把數據解析成自己想要的數據類型的過程。

本質就是對請求體中的數據進行解析。

在了解解析器之前~大家要先知道Accept以及ContentType請求頭。

Accept是告訴對方我能解析什么樣的數據,通常也可以表示我想要什么樣的數據。

ContentType是告訴對方我給你的是什么樣的數據類型。

那大家想一下,解析器工作原理的本質應該是什么~~~~~

就是拿到請求的ContentType來判斷前端給我的數據類型是什么,然后我們去拿相應的解析器去解析數據。

Django的解析器

我們請求進來請求體中的數據在request.body中,那也就證明,解析器會把解析好的數據放入request.body

我們在視圖中可以打印request的類型,能夠知道request是WSGIRequest這個類。

我們可以看下這個類的源碼~~~我們是怎么拿到request.POST數據的~~

 

application/x-www-form-urlencoded不是不能上傳文件,是只能上傳文本格式的文件,

multipart/form-data是將文件以二進制的形式上傳,這樣可以實現多種類型的文件上傳

一個解析到request.POST,   request.FILES中。

也就是說我們之前能在request中能到的各種數據是因為用了不同格式的數據解析器~

那么我們的DRF能夠解析什么樣的數據類型呢~~~

DRF的解析器

我們想一個問題~什么時候我們的解析器會被調用呢~~ 是不是在request.data拿數據的時候~

我們說請求數據都在request.data中,那我們看下這個Request類里的data~~

得到解析器后,調用解析器里的parse方法~~

 那說到這里~我們看下DRF配置的默認的解析器的類都有哪些~~

也就是說我們的DRF支持Json,Form表單的請求,包括多種文件類型的數據~~~~

可以在我們的視圖中配置視圖級別的解析器~~~

這就是我們DRF的解析器~~~

DRF的渲染器

渲染器就是友好的展示數據~~

DRF給我們提供的渲染器有~~

我們在瀏覽器中展示的DRF測試的那個頁面~就是通過瀏覽器的渲染器來做到的~~

當然我們可以展示Json數據類型~~~~渲染器比較簡單~~~~ 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM