drf序列化元件

2022-03-28 01:22:59 字數 2047 閱讀 5852

restful規範:前後端分離:前端乙個專案,後端乙個專案

1:通常使用https協議

2.網域名稱部署 api.baidu.com     www.baidu.com/api

3.版本    www.baidu.com/api/v2  版本號放在請求頭中

4.路徑都是名詞(可以用複數)

5.根據不同的請求方式,執行不同的操作  delete刪除

put和patch操作都是冪等性操作

6.請求位址中攜帶過濾條件

7.狀態碼   

8.錯誤資訊

9.響應的資料格式:

所有資料:列表

刪除資料:返回乙個空

10.返回的資料中攜帶連線

路由中配置  類名.as_view()  本質是乙個返回的函式位址

當有請求時:記憶體位址(request,其他參)

內部又呼叫的dispatch方法,通過反射,根據請求方式,執行不同方法

寫乙個類繼承serializer 在類中寫要序列化的字段

如name = serializers.charfield()

在view.py中使用book=bookserializer(book_list,many=true)(呼叫類進行序列化,序列化格式按照序列化類中字段指定的結果)

book.data 就是序列化後的資料

source的三種用法:1指定字段 2:指定方法 3:深度查詢(跨表)

serializermethodfield,必須配合方法使用get_欄位名(self,obj)obj是當前序列化的物件(應該是利用反射)

serializermethodfield對應的方法中還可以繼續使用其他的序列化類

3:rest-framework序列化之modelserializer

寫乙個類繼承modelserializer  在類內部寫:

class meta:

model = models.book

fields='__all__'  所有字段

exclude=['name',]  除什麼字段之外

depth=1  depth表示深度

重寫屬性

def validate_name(self,value):

if value.startswith('sb'):

#不能讓你過

raise validationerror('書名不能以sb開頭')

else:

return value

#全域性鉤子函式,對全域性字段進行校驗

# def validate(self,a):

# # print(a)

# name=a.get('name')

# price=a.get('price')

# if name != price:

# raise validationerror('錯了')

# else:

# return a

校驗資料在序列化類中校驗

book_ser=bookserializer(instance=book,many=false)

注意book:不是queryset物件,是book物件

5新增一本書

/books/傳送post請求,攜帶json格式資料

6.反序列化之區域性,全域性鉤子(序列化的類一定是繼承modelserializer的類)

def validate_name(self,value):

if value.startswith('sb'):

raise validationerror('書名不能以sb開頭')

else:

return value

全域性鉤子函式,對全域性字段進行校驗

def validate(self,a):

name = a.get('name')

price=a.get('price')

if name !=price:

raise vilidationerror('錯了)

else:

return a

drf序列化元件

1.rest framework序列化之serializer rest framework序列化之serializer步驟 1.建立乙個類,繼承serializer 2.在類中寫要序列化的字段 class bookserializer serializers.serializer 序列化表中的某幾個...

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...