這篇文章將為大家詳細(xì)講解有關(guān)深入淺析Django模型驗(yàn)證器,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
從事四川聯(lián)通機(jī)房服務(wù)器托管,服務(wù)器租用,云主機(jī),網(wǎng)站空間,域名注冊,CDN,網(wǎng)絡(luò)代維等服務(wù)。前言
在Django的模型字段參數(shù)中,有一個參數(shù)叫做validators,這個參數(shù)是用來指定當(dāng)前字段需要使用的驗(yàn)證器,也就是對字段數(shù)據(jù)的合法性進(jìn)行驗(yàn)證,比如大小、類型等。
Django的驗(yàn)證器可以分為模型相關(guān)的驗(yàn)證器和表單相關(guān)的驗(yàn)證器,它們基本類似,但在使用上有區(qū)別。
本文討論的是模型相關(guān)的驗(yàn)證器。
一、自定義驗(yàn)證器
一個驗(yàn)證器其實(shí)就是一個可調(diào)用的對象(函數(shù)或類),接收一個初始輸入值作為參數(shù),對這個值進(jìn)行一系列邏輯判斷,如果不滿足某些規(guī)則或者條件,則表示驗(yàn)證不通過,拋出一個ValidationError異常。如果滿足條件則通過驗(yàn)證,不返回任何內(nèi)容(也就是默認(rèn)的return None),可以繼續(xù)下一步。
驗(yàn)證器具有重要作用,可以被重用在別的字段上,是工具類型的邏輯封裝。
下面是一個驗(yàn)證器的例子,它只允許偶數(shù)通過驗(yàn)證:
from django.core.exceptions import ValidationError from django.utils.translation import gettext_lazy as _ def validate_even(value): if value % 2 != 0: raise ValidationError( _('%(value)s is not an even number'), params={'value': value}, )