在drf框架中,我們很多的資料檢驗都是在序列化器中完成的,但是序列化器報錯的資訊就會很奇怪,所以我們最好是使用自己封裝的序列化器來對報錯資訊進行封裝,我是這樣處理的
未處理之前:
}
處理之後:
處理的**
class
shiyanview
(genericapiview)
:"""實驗"""
permission_classes =
[isauthenticated, adminuserpermission]
defpost
(self, request,
*args,
**kwargs)
: data = request.data
serializer = shiyanserializer(data=data)
ifnot serializer.is_valid():
# #
# print
('-----------------------'
)print
(serializer.errors)
# 對提示進行封裝
message =
str(serializer.errors)
start_string = message.find(
'string'
) end_string = message.find(
'code'
) a = message[start_string+
8:end_string-3]
print
(a)return apiresponse.fail(message=a)
return apiresponse.success(message=
"充值成功"
)
class
shiyanserializer
(serializers.serializer)
: username = serializers.charfield(label=
'使用者名稱'
, required=
true
, min_length=
6, max_length=10)
password = serializers.integerfield(label=
'密碼'
, required=
false
)def
validate
(self, attrs)
: username = attrs[
'username'
] password = attrs[
'password']if
notisinstance
(password,
int)
:raise serializers.validationerror(
)return attrs
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之序列化器
1.drf框架定義的序列化流程 1.狹義上的序列化定義 資料流向 後端到前段 後端負責處理資料處理流程 模型類物件 字典 json字串 drf約定的序列化流程 1.通過django模型類獲取資料庫資料構建模型類物件 2.把模型類物件轉化為字典 3.把字典轉化為json格式的字串 2.drf框架的反序...