序列化器的理解

2021-08-27 13:56:04 字數 1872 閱讀 8668

」』

特點: 反覆重複

因為不論什麼請求方式,都需要給前端返回物件內容,就是json格式的

所以每次如果有查詢的結果物件都需要遍歷成字典,和flask相同

如果不是get請求是帶有內容的請求,那從前端接收的是json格式

每次都需要從request.body中拿出內容,是bytes格式

然後decode解碼成json字串然後再loads成可以給python處理的字典

」』」』

說明:

return jsonresponse(book_list, safe=false)

」』 序列化:對查詢結果進行遍歷,然後轉成字典,給到jsonresponse

反序列化:接收前端json處理成字典,然後校驗

」』」』

2.序列化器: serializer

字段 : 跟模型類建立很相似,具體存在的字段見講義 還有常用的引數(就是約束)

使用: 建立物件 serializer = serializer(instance=none, data=empty, **kwarg)

說明: 序列化時,將模型類物件傳入instance引數 instance = 序列化物件

反序列化時,將要被反序列化的資料傳入data引數 data = 反序列化物件

可通過context引數額外新增資料 即 **kwarg : context= 通過serializer物件的context屬性獲取

」』」』

3.序列化操作 : 其實就是查詢到物件之後,遍歷構造字典的過程,而jsonresponse由內建的 renderer渲染器來執行

3-1.序列化只使用序列化器物件的第乙個引數instance

serializer = bookinfoserializer(instance = book)

通過data屬性可以獲取序列化後的資料,這個data跟第二個引數可不是乙個

serializer.data

3-2.如果要被序列化的是包含多條資料的查詢集queryset,新增many=true引數

book_qs = bookinfo.objects.all()

serializer = bookinfoserializer(book_qs, many=true)

serializer.data

」』」』

4.關聯物件巢狀序列化(由hero->book通過 hbook方法)

4-1.hbook是個外來鍵: primarykeyrelatedfield

hbook = serializers.primarykeyrelatedfield(label=』圖書』, read_only=true)

因為是外來鍵,第二個位置必須有read_only=true 或者 查詢集 queryset=bookinfo.objects.all() 要不報錯

serializer.data 序列化的時候 結果是 關聯物件的主鍵 即 book.id

4-2.因為id不直觀,想要詳細內容的字串,把外來鍵字段改為 : stringrelatedfield

hbook = serializers.stringrelatedfield(label=』圖書』)

結果:

4-4.關聯物件的指定字段資料 : slugrelatedfield

hbook = serializers.slugrelatedfield(label=』圖書』, read_only=true, slug_field=』bpub_date』)

slug_field指明使用關聯物件的哪個字段

結果:4-5.使用關聯物件的序列化器: 直接把所屬book的所有內容序列化

hbook = bookinfoserializer()

結果:

序列化(序列化)

原書上翻譯為序列化,msdn翻譯為序列化 作用 當需要儲存,或者網路傳輸 remoting時,資料 物件或值 需要序列化 類似於打包傳輸檔案。system.serializableattribute 序列化是指儲存和獲取磁碟檔案 記憶體或其他地方中的物件。在序列化時,所有的例項資料都儲存到儲存介質上...

深入理解序列化和反序列化

序列化 就是將記憶體中的物件轉換為位元組序列,方便持久化到磁碟或者網路傳輸。物件序列化過程可以分為兩步 第一 將物件轉換為位元組陣列 第二 將位元組陣列儲存到磁碟 public static byte getbytearray4object object obj throws exception p...

序列化與反序列化 深入理解

序列化指的是將乙個記憶體物件轉化成一串位元組資料 儲存在乙個位元組陣列中 可用於儲存到本地檔案或網路傳輸。反序列化就是將位元組資料還原成記憶體物件。如 struct student 將乙個student物件轉換成位元組資料儲存在bytearray 20 中稱為序列化 如 int count 0 ch...