1. 程式人生 > >【DRF框架】序列化元件——欄位驗證

【DRF框架】序列化元件——欄位驗證

單個欄位的驗證

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,])             # 使用自定義驗證器

 

三者的權重:

自定義驗證器 > 單個欄位的驗證 > 多個欄位的驗證