1. 程式人生 > >【DRF解析器和渲染器】

【DRF解析器和渲染器】

文章目錄


解析器

解析器的作用就是服務端接收客戶端傳過來的資料,把資料解析成自己想要的資料型別的過程.

本質就是對請求體中的資料進行解析.

Content-type:用於宣告我給你傳的是什麼型別的資料
application/x-ww-form-urlencoded 表單資料型別
multipart/form-data 檔案
application/json(比如:request.body)
Accept:用於宣告我能解析什麼樣的資料型別
·

Django中的解析器

我們的請求進來後,請求體中的資料是儲存在request.body中的.
這就說明:解析器會把解析好的資料放入request.body中.

我們在檢視中列印request的型別,便可知道requestWSGIRequest這個類的.

我們可以看下這個類的原始碼,我們是這樣拿到request.POST資料的:
在這裡插入圖片描述
在這裡插入圖片描述
application/x-www-form-urlencoded不是不能上傳檔案,是隻能上傳文字格式的檔案.
multipart/form-data

是將檔案以二進位制的形式上傳,這樣可以實現多種型別的檔案上傳.

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

也就是說,在Django中我們之所以能在request中得到各種資料型別,是因為我們使用了這些解析器.

DRF中的解析器

DRF的請求資料都在request.data中.
所以,我們就來看Request類中的data
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
得到解析器後,呼叫解析器裡的parse方法:
在這裡插入圖片描述

到這裡,我們再看下DRF配置的預設的解析器的類都有哪些:
在這裡插入圖片描述

DEF支援Json、Form表單的請求,包括多種檔案型別的資料:
在這裡插入圖片描述

我們也可以再檢視中配置檢視級別的解析器:
在這裡插入圖片描述


好.


DRF中的渲染器

渲染器為我們友好地展示資料.

DRF為我們提供的渲染器有:
在這裡插入圖片描述
一個是Json的,一個是瀏覽器的.