解析器
解析器的作用就是服務端接收客戶端傳過來的數據,把數據解析成自己想要的數據類型的過程。
本質就是對請求體中的數據進行解析。
在了解解析器之前~大家要先知道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數據類型~~~~渲染器比較簡單~~~~