日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

django中序列化、反序列化过程

發布時間:2025/3/21 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 django中序列化、反序列化过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、定義序列化器
a、如果需要使用DRF框架來實現序列化、反序列化、數據庫操作,在子應用中創建serializers.py文件
b、文件名推薦命名為serializers.py

在serializer.py文件中定義序列化器類

二、定義序列化器類規則說明
1、必須繼承Serializer類或者Serializer子類
2、定義的序列化器類中,字段名要與模型類中的字段名保持一致
3、定義的序列化器類的字段(類屬性)為Field子類
4、默認定義哪些字段,那么哪些字段就會返回前端;同時也必須得輸入(前端需要傳遞)
5、常用的序列化器字段類型:
IntegerField-》int
CharField-》str
BooleanField-》bool
DateTimeField-》datetime
6、id中的參數:min_value=1,max_value=1000:表示限制id最小值不能小于1,,最 大值id不能大于1000
7、可以在序列化器中指定不同的選項
label和help_text,與模型類中的verbose_name和help_text參數一樣
IntegerField,可以使用max_value指定指定最大值,min_value指定最小值
CharField,可以使用max_length指定最大長度,min_length指定最小值
7、定義的序列化器字段中,required默認為True,說明默認定義的字段得必須輸入和輸出
8、如果在序列化器字段中,設置required=False,那么前端用戶可以不傳遞該字段
(校驗時會忽略該字段)所以不會報錯
9、如果未定義模型類中的某個字段,那么該字段不會輸入也不會輸出
10、需求:前端必須得輸入(反序列化輸入)name(必須得校驗),但是不會需要輸出(序列化輸出)
如果某個參數指定了write_only=True:那么該字段僅僅只輸入(反序列化輸入,做數據校驗),
不會輸出(序列化輸出),默認為write_only=False
11、前端可以不用傳遞,但是后端需要輸出?
如果某個參數指定了read_only=True:那么該字段僅僅只輸出(序列化輸出),
不會輸入(反序列化輸入,做數據校驗),默認為read_only=False
name必傳參數不能設置read_only=True
12、在序列化器類中定義的字段,默認allow_null=False,該字段不允許傳遞空值,
如果指定allow_null=True,那么該字段允許傳遞null
13、在序列化器類中定義CharField字段,默認allow_blank=False,該字段不允許為空字符串,
如果指定allow_blank=True,那么該字段允許傳遞空字符串
14、在序列化器類中定義的字段,可以使用default參數來指定默認值,如果指定了default參數,那么用戶可以不用傳遞,會將default指定的值作為傳入參數。
三、引用序列化器
1、可以使用序列化器進行序列化輸出操作
a、創建序列化器類對象
b、可以將模型對象或者查詢集對象、普通對象、嵌套普通對象的列表,以instance關鍵字來傳遞參數
c、如果傳遞的是查詢集對象、嵌套普通對象的列表(多條數據),必須得設置many=True


d、如果傳遞的是模型對象,普通對象,不需要設置many=True

e、可以使用序列化器對象的.data屬性,獲取序列化器之后的數據(字典、嵌套字典的列表)


2、創建數據

3、獲取詳細數據

4、更新數據

5、刪除數據
不涉及序列化輸出操作

四、應用反序列化器

1、定義序列化器類,使用data關鍵字參數傳遞字典參數

2、可以使用序列化器對象調用.is_valid()方法,才會開始對前端輸入的參數進行校驗

3、如果校驗通過.is_valid()返回True,否則返回False

4、如果調用.is_valid()方法,添加raise_exception=True,校驗不通過會拋出異常,否則不會拋出異常
5、只有在調用.id_valid()方法之后,才可以使用序列化器對象調用.errors屬性,來獲取錯誤的提示信息(字典類型)
6、只有在調用.is_valid()方法之后,才可以使用序列化器對象調用.validated_data屬性,來獲取校驗通過之后的數據,與json.loads轉化之后的數據有區別

1、創建數據

2、更新數據

3、刪除一條項目數據
4、獲取一條項目數據(獲取詳情數據)
5、獲取所有項目數據(獲取列表數據)不涉及反序列化輸入操作

總結

以上是生活随笔為你收集整理的django中序列化、反序列化过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。