框架的序列化與反序列化

DRF

使用Django rest_framework實(shí)現(xiàn)rest api;

總概圖

RESTful設(shè)計(jì)方法

1.域名

2.版本

3.路徑

4.HTTP動(dòng)詞

5.過(guò)濾信息

6.狀態(tài)碼

7.錯(cuò)誤處理

8.返回結(jié)果

9.超媒體

10.其他;服務(wù)器盡量返回json數(shù)據(jù),避免xml

序列化;

獲取數(shù)據(jù)對(duì)象----》返還json給前端

ser.data; 獲取查詢后的數(shù)據(jù)

使用關(guān)聯(lián)對(duì)象;

PrimaryKeyRelatedField;

該字段將被序列化成為關(guān)聯(lián)對(duì)象的主鍵;

StringRelatedField;

此字段將被序列化為關(guān)聯(lián)對(duì)象的字符串表示方式;

HyperlinkedRelatedField;


SlugRelatedField;


to_representations方法不僅局限在控制關(guān)聯(lián)對(duì)象格式上,適用于各個(gè)序列化器字段類型。(重寫字段格式)

反序列化;

  • 獲取前端數(shù)據(jù)----》數(shù)據(jù)驗(yàn)證---》將驗(yàn)證后的數(shù)據(jù)進(jìn)行保存或更新----》得到數(shù)據(jù)

  • ser.is_valid(); 驗(yàn)證通過(guò)返回True,否則為False

  • validated_data ; 獲取驗(yàn)證后的數(shù)據(jù)

  • orderedDict;類似字典的方式存儲(chǔ)數(shù)據(jù)

  • ser.errors;查看錯(cuò)誤信息(之前在代碼行定義)

單個(gè)字段驗(yàn)證;

多個(gè)字段驗(yàn)證;

  • 定義方法驗(yàn)證字段必須返回相應(yīng)的值

保存與更新;

  • partial=True;使得之前所有required=False變?yōu)門rue,True變?yōu)镕alse;

模型類序列化器;

  • 自動(dòng)生成自己想要的序列化器,簡(jiǎn)化代碼,工具包早已定義好
  • exclude=(‘’)表示排除某個(gè)字段的輸出;

  • depth=1;表示層級(jí)嵌套一層;

例如;一個(gè)英雄對(duì)象嵌套一層圖書信息;
顯示指明字段;

為字段添加參數(shù);

序列化;從數(shù)據(jù)庫(kù)獲取數(shù)據(jù)轉(zhuǎn)換為json數(shù)據(jù)等其他數(shù)據(jù)格式返回給前端

反序列化;對(duì)于數(shù)據(jù)的post與put進(jìn)行數(shù)據(jù)的修改與刪除等等數(shù)據(jù)庫(kù)操作,使用反序列化,獲取前端需要操作的json數(shù)據(jù)等其他格式信息,校驗(yàn)數(shù)據(jù)(與數(shù)據(jù)庫(kù)進(jìn)行對(duì)比),在反序列化里進(jìn)行修改成模型類對(duì)象數(shù)據(jù)保存,然后返回給前端;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容