【DRF框架】序列化組件——字段驗證
阿新 • • 發佈:2018-12-15
error attrs inux 多個 分類 err xxx 判斷 不一致
單個字段的驗證
1.在序列化器裏定義校驗字段的鉤子方法 validate_字段
2.獲取字段的數據
3.驗證不通過,拋出異常 raise serializers.ValidationError("校驗不通過的說明")
4.驗證通過,直接返回字段數據
# 對title字段進行驗證
def validate_title(self,value):
# 判斷value是否含有敏感字段
if "xx" in value:
# 存在敏感字段,拋出異常並附上自定義的原因
raise serializers.ValidationError("該字段含有敏感詞 ")
# 不存在,則直接返回
return value
多個字段的驗證
1.在序列化器定義validate方法
2.attrs是所有數據組成的字典
3.不符合拋出異常 raise serializers.ValidationError("校驗不通過的說明")
# 對多個字段進行驗證
def validate(self, attrs):
# arrrs是數據組成的字典
# 判斷linux的數是否在linux分類
if "linux" in attrs.get(‘title‘) and attrs[‘category_post‘] == 2:
return attrs
else:
raise serializers.ValidationError("圖書與分類不一致")
自定義驗證器
使用:在字段添加 validators=[自定義驗證器,]
# 自定義驗證器
def my_validate(value):
if "xxx" in value:
raise serializers.ValidationError("該字段包含敏感詞!!!")
else:
return value
title = serializers.CharField(max_length=32,validators=[my_validate,]) # 使用自定義驗證器
三者的權重:
自定義驗證器 > 單個字段的驗證 > 多個字段的驗證
【DRF框架】序列化組件——字段驗證