DRF框架—序列化器中的字段校验规则
一、怎么校驗創(chuàng)建的項目名是否是唯一的,當項目名name字段不唯一,怎么設置提示信息?
方法:導入UniqueValidator
from rest_framework.validators import UniqueValidator
1)、可以在序列化器字段上使用validators指定自定義校驗規(guī)則
2)、validators必須得為序列類型(一般為列表),在列表中可以添加多個校驗規(guī)則
3)、DRF框架自帶UniqueValidator校驗器,必須得使用queryset指定查詢集對象,用于對該字段進行校驗
4)、UniqueValidator校驗器,可以使用message指定自定義報錯信息
嘗試輸入同名項目檢驗下,如下圖所示:
二、項目名稱中必須得包含“項目”2字
添加自定義校驗規(guī)則
1)、可以在類外面自定義校驗函數(shù)
2)、第一個參數(shù)為待校驗的值
3)、如果校驗不通過,必須得拋出serializers.ValidationError(‘報錯信息’)異常,同時可以指定具體得報錯信息
4)、需要將校驗函數(shù)名放置到某一個字段的 validators列表中(不加括號)
三、單字段校驗
1)、可以在序列化器類中對單個字段進行校驗
2)、但字段的校驗方法名稱,必須把validate_作為前綴,加上待校驗得字段名,如:validate_待校驗得字段名
3)、如果校驗不通過必須得返回serializers.ValidationError(‘具體得報錯信息’)
4)、如果校驗通過,往往將校驗之后得值返回
5)、如果該字段在定義時添加得校驗規(guī)則不通過,那么是不會進行單字段校驗的,如果能對單字段進行校驗說明上面是校驗通過的。
6)、必須返回attr
四、多字段校驗
1)、可以在序列化器類中對多個字段進行聯(lián)合校驗
2)、使用固定得validate方法,會接收上面校驗通過之后的字典數(shù)據(jù)
3)、當所有字段定義時添加的校驗規(guī)則都通過,并且每個字典得單字段校驗通過得情況下,才會調(diào)用validate方法
4)、必須返回attrs
五、to_internal_value方法
1、to_internal_value方法,是所有字段開始進行校驗時的入口方法(最先調(diào)用的方法)
2、會依次對序列化器類的各個序列化器字段進行校驗:先執(zhí)行字段定義時的校驗規(guī)則
3、首先對字段類型進行校驗——》依次驗證validators列表中的校驗規(guī)則——》從右到左驗證其他的校驗規(guī)則——》調(diào)用單字段校驗方法(如果有定義)
to_internal_value方法調(diào)用結(jié)束——》調(diào)用多字段聯(lián)合調(diào)用validate方法
總結(jié)
以上是生活随笔為你收集整理的DRF框架—序列化器中的字段校验规则的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: django中序列化器字段参数、关联字段
- 下一篇: 关于django—模型序列化器类详细内容