1.drf框架定義的序列化流程
1.狹義上的序列化定義
資料流向:後端到前段
後端負責處理資料處理流程:
模型類物件–》字典–》json字串(drf約定的序列化流程)
1.通過django模型類獲取資料庫資料構建模型類物件
2.把模型類物件轉化為字典
3.把字典轉化為json格式的字串
2.drf框架的反序列化流程
資料流向:前段到後端
json字串–>字典–>資料校驗(產生有效資料)–>模型類物件(新建,更新)
二進位制轉化為字串再轉化為json字串
字串轉化為字典
資料校驗
模型類物件
資料庫增刪改查中的drf約定的序列化和反序列化業務
查詢(序列化):模型類物件–>字典–>json字串
新增(反序列化):json字串–>字典–>資料校驗–>有效資料–>新建模型物件
更新(反序列化):json字串–>字典–>資料校驗–>有效資料–>更新模型物件
刪除(規定為反序列化):根據路徑pk刪除模型類物件
2.廣義上的序列化定義
定義:相同的資料在不同型別(表現形式)之間的轉化,稱之為序列化,反序列化是與序列化相對的過程:序列化是乙個過程,中間可能經過多層轉化(我們往往最主要關注的是首尾)
a =
a:型別是字典,值(記錄的資料)是乙個人的資訊(鍵值對)
b =''
b:型別是字串(json格式),
import json
b = json.dumps(a)
a = json.loads(b)
c =[
("name"
,"yangyadong"),
("age",18
)]c :列表巢狀元組(元組恆定2個元素)
a =dict
(c)c-
->a:遍歷
字典,列表,字串,元組,集合,json字串
定義:用來執行序列化/反序列化操作的乙個工具
物件:操作模型類
作用:功能;
序列化:模型類物件–》使用序列化器–>字典—>json字串
反序列化器:json字串–>字典–>交給序列化器–>有效資料–>新建/更新模型類
模型類隱藏欄位也可以對映,只要模型類有的字段都可以對映
2.序列化器的定義
3.序列化器之序列化操作
3.2關聯巢狀序列化
兩大方向,三種形式
方向一:序列化主表資料的時候順帶著序列化關聯從表多個資料;
方向二:序列化從表資料的時候,順帶著序列化關**表多個資料;
形式一:關聯欄位的型別定義成:primarykeyrelatedfield(queryset,many)
形式二:stringrelatedfield:把關聯物件
4.序列化器之反序列化操作
4.1 反序列化操作值標準校驗流程
4.2反序列化操作之標準新建/更新流程
在子應用裡建立serializers.py
from rest_framework import serializers
# 1. 定義bookinfo模型類的序列化器
class
bookinfoserializers
(serializers, serializer)
:# 2. 通過定義模型類,同名類屬性,型別一一對應的形式,來指定參與序列化的字段,決定序列化結果(字典)有哪些字段
btitle = serializers.charfield(
) bpub_date = serializers.datefield(
) bread = serializers.integerfield(
) is_delete = serializers.booleanfield(
) image = serializers.imagefield(
)
標準序列化流程
序列化結果
序列化單一物件
獲取目標資料(被序列化操作的模型類物件,乙個或者多個)
例項化序列化器物件
獲取序列化的結果
python3 manage.py shell
from books.models import
*from book.serializers import
*
book = bookinfo.objects.
all()[
0]bs = bookinfoserializer(instance = book)
bs.data
序列化多個物件
python3 manage.py shell
from books.models import bookinfoserializers
#1. 獲取目標資料(被序列化操作的模型類物件,乙個或者多個)
books = bookinfo.objects.
all(
)books
#2.例項化序列化器物件(傳入目標資料)
bs = bookinfoserializer(instance = books, many =
true
)#3.獲取序列化的結果
bs.data
b1 = bs.data[0]
b1b1.get(
'title'
)
模型類三大屬性:id(主鍵)
id = serializers.integerfield()
related_named定義乙個主表隱藏欄位為heros
drf 序列化器
序列化器 和 django中 的 form 和 modelform 有類似的地方 因為 在 drf 中,沒有模板的概念,所以 序列化的主要作用 是對響應的資料做序列化的,還可以對 接收到的資料做序列化 serializer 序列化 查詢的結果queryset user.objects.all ser...
drf 序列化器
models.pyclass chargepolicydetail models.model purpose c models.apartment.purpose category c models.apartment.category name models.charfield max lengt...
如何使用DRF的序列化器之序列化
drf兩大利器為serizlizer序列化器和檢視,而序列化器又分為序列化和反序列化,本篇文章首先來看下drf序列化器的常用序列化方法。首先來看使用django開發rest介面時的表現,示例 如下 views.py from datetime import datetime class booksa...