日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

django Model層常用驗證器及自定義驗證器詳解

瀏覽:27日期:2024-09-25 10:40:20

在Django中,對數(shù)據(jù)進行校驗有兩種方式:一種是通過Form校驗,一種是通過Model校驗。在此,我對Model中的校驗方法做下記錄。

示例之前補充以下幾點:

1、Django數(shù)據(jù)校驗方式分為以下三步:

Model.clean_fields() 驗證字段基本規(guī)則比如長度格式等;

Model.clean() 可自定義驗證條件和報錯信息;

Model.validate_unique() 為驗證添加的唯一性約束。

2、此三步驗證通過調(diào)用full_claen(exclude=None, validate_unique=True)來依次執(zhí)行。

exclude:可以用來指定不需要執(zhí)行校驗的field。ModelForm也利用這個參數(shù)來將field排除。

validate_unique:用來指定是否需要執(zhí)行Model.validate_unique()。

3、而full_clean()又是通過調(diào)用is_valid()方法來執(zhí)行。

4、save()執(zhí)行的時候是不會自動調(diào)用full_clean()來進行校驗的。

校驗應(yīng)該在save()執(zhí)行之前完成,你可以先在form進行校驗,也可以在model中進行校驗。但是,你必須確保通過這兩個校驗之后的數(shù)據(jù)是絕對沒有問題的“干凈”數(shù)據(jù),然后再調(diào)用save()方法將數(shù)據(jù)存儲入庫。

5、校驗中的錯誤處理

我們使用ValidationError來在Model.clean中拋出錯誤,這個錯誤信息將會存儲在以NON_FIELD_ERRORS為key的字典中。這個key是用來存儲對于整個model中的錯誤信息的。

如何獲取校驗的錯誤信息:

from django.core.exceptions import ValidationError, NON_FIELD_ERRORStry: article.full_clean()except ValidationError as e: non_field_errors = e.message_dict[NON_FIELD_ERRORS]

如何指定對于某個特定的field的校驗錯誤信息:

class Article(models.Model): ... def clean(self): if self.status == ’draft’ and self.pub_date is not None: # raise ValidationError({’pub_date’: _(’Draft entries may not have a publication date.’)}) raise ValidationError({’pub_date’: ’Draft entries may not have a publication date.’}) ...

如何指定多個field的校驗錯誤信息:

class Article(models.Model): ... def clean(self): if self.status == ’draft’ and self.pub_date is not None: raise ValidationError({’pub_date’: ’Draft entries may not have a publication date.’, ’creator’: ’Creator can’t be null’}) ...

如何指定全局性校驗錯誤信息:

class Article(models.Model): ... def clean(self): if self.status == ’draft’ and self.pub_date is not None: raise ValidationError(’Draft entries may not have a publication date.’) ...

進入正題:

一、如何使用驗證器:

在驗證某個字段的時候,在模型或者自定義form表單中傳遞一個 validators 參數(shù)用來指定驗證器,進一步對數(shù)據(jù)進行過濾。

或者,通過model中的 Field類型 或者一些參數(shù)就可以指定。

比如 EmailValidator ,我們可以通過 指定字段類型為EmailField 來指定。

比如 MaxValueValidator ,我們可以通過 max_value 、max_length參數(shù)來指定。

class Interview(models.Model): feedback = models.TextField(max_length=1024, validators=[MinLengthValidator(20, message=’不少于20字’)], verbose_name=’面試反饋’) mail = models.EmailField(max_length=64, blank=True, null=True, verbose_name=’郵箱’) age= models.IntegerField(max_value=64, blank=True, null=True, verbose_name=’年齡’)

二、常用自帶驗證器:

1. MaxValueValidator :驗證最大值。

2. MinValueValidator :驗證最小值。

3. MinLengthValidator :驗證最小長度。

4. MaxLengthValidator :驗證最大長度。

5. EmailValidator :驗證是否是郵箱格式。

6. URLValidator :驗證是否是 URL 格式。

7. RegexValidator :如果還需要更加復(fù)雜的驗證,那么我們可以通過正則表達式的驗證。

class Demo(models.Model):telephone = models.CharField(validators=[validators.RegexValidator('1[345678]d{9}',message=’請輸入正確格式的手機號碼!’)])

三、自定義驗證器:

方法:

如果你想要自定義model的校驗,或者想要修改model的屬性的話,就要重寫clean()方法。

class Interview(models.Model): feedback = models.TextField(max_length=1024, validators=[MinLengthValidator(20, message=’不少于20字’)], verbose_name=’面試反饋’) mail = models.EmailField(max_length=64, blank=True, null=True, verbose_name=’郵箱’) age= models.IntegerField(max_value=64, blank=True, null=True, verbose_name=’年齡’ ... def clean(self): if self.result_1 == InterviewResult.FAIL and len(self.feedback) < 20: raise ValidationError({’feedback’: ’不少于20字’})

效果:

django Model層常用驗證器及自定義驗證器詳解

django Model層常用驗證器及自定義驗證器詳解

如果你想做一個全局性的錯誤提示,可以這樣:

... def clean(self): if self.result_1 == InterviewResult.FAIL and len(self.feedback) < 20: raise ValidationError(’不少于20字吧’)

效果:

django Model層常用驗證器及自定義驗證器詳解

以上這篇django Model層常用驗證器及自定義驗證器詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Django
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲国产专区| 亚洲精品护士| 婷婷综合激情| 亚洲二区视频| 青青草91视频| 国产一区观看| 亚洲精品看片| 欧美日韩一区自拍| 伊人久久av| 久久国产精品久久久久久电车| 一级欧美视频| sm捆绑调教国产免费网站在线观看| 成人精品天堂一区二区三区| 鲁大师成人一区二区三区| 精品一区二区三区在线观看视频| 国产精品久久观看| 天使萌一区二区三区免费观看| 国产欧美久久一区二区三区| 久久美女精品| 首页国产欧美久久| 久久国产视频网| 成人精品国产亚洲| 国产精品日本一区二区三区在线| 91精品1区| 国产精品片aa在线观看| 精品一区在线| 久久亚州av| 日本高清久久| 91午夜精品| 亚洲视频二区| 爽好多水快深点欧美视频| 影音国产精品| 亚洲国产影院| 国产激情久久| 国产精品一区二区三区www| 国产亚洲午夜| 免费在线看一区| 尹人成人综合网| 九色porny丨国产首页在线| 成人三级高清视频在线看| 国产欧美自拍| 久久精品国产久精国产爱| 天堂中文在线播放| 国产精品字幕| 欧美日韩精品一本二本三本| 国产在线日韩| 蜜臀久久久久久久| 中文字幕高清在线播放| 精品伊人久久久| 久久一区视频| 国产精品成人一区二区不卡| 免费看一区二区三区| 欧美国产极品| 999国产精品| 亚洲毛片网站| 久久av偷拍| 国内揄拍国内精品久久| 成人高清一区| 久久亚洲国产| 中文不卡在线| 成午夜精品一区二区三区软件| 亚洲欧美日韩国产| 婷婷亚洲成人| 91精品国产91久久久久久黑人| 国产高清一区二区| 日本精品国产| 色综合五月天| 最新国产精品视频| 精品淫伦v久久水蜜桃| 99国产一区| 成人国产精选| 日韩精选在线| 激情婷婷久久| 国产精品久久久久9999高清| 日韩精品一卡| 国产精品久久久久久久免费软件| 自拍自偷一区二区三区| 91tv亚洲精品香蕉国产一区| 久久激五月天综合精品| 免费视频一区三区| 国产一区二区久久久久| 中文一区一区三区免费在线观 | 99久久激情| 亚洲区第一页| 高清av一区| 日本v片在线高清不卡在线观看| 欧美日韩免费观看视频| 丝袜a∨在线一区二区三区不卡| 久久男人av| 精品一区二区三区中文字幕在线| 快she精品国产999| 久久久久亚洲| 麻豆中文一区二区| 国产精品嫩草影院在线看| 亚洲一区中文| 国产欧美丝祙| 亚洲视频国产| 日本欧美一区二区在线观看| 7m精品国产导航在线| 蜜芽一区二区三区| 在线视频精品| 亚洲精品观看| 日精品一区二区三区| 欧美在线看片| 国产一区二区三区天码| 国产亚洲第一伦理第一区| 日韩av网站在线免费观看| 国产欧美日韩综合一区在线播放| 国产精品任我爽爆在线播放| 国产极品久久久久久久久波多结野| 美国欧美日韩国产在线播放| 亚洲免费毛片| 精品一区二区三区视频在线播放 | 久久最新视频| 中文字幕日韩欧美精品高清在线| 亚洲一区二区三区免费在线观看| 蜜臀国产一区二区三区在线播放| 国产亚洲一区二区三区不卡 | 精品国产亚洲一区二区三区大结局| 久久精品国产亚洲aⅴ| 精品视频黄色| 久久久久国产一区二区| 日韩免费av| 综合国产精品| 色在线视频观看| 亚洲毛片一区| caoporn视频在线| 国产高潮在线| 亚洲精品大全| 国产成人久久精品麻豆二区| 国产一级久久| 免费在线小视频| 日本欧美大码aⅴ在线播放| 99精品视频精品精品视频| 亚洲精品九九| 日韩伦理一区| 美女精品久久| 久久精品av麻豆的观看方式| 九九精品调教| 国产一区精品福利| 国产亚洲精品美女久久| 在线视频亚洲欧美中文| 丝袜av一区| 国产精品久久久久9999高清| 日本久久精品| 免费看久久久| 国产精品qvod| 欧美日韩精品一区二区三区在线观看| 欧美日韩一区二区三区视频播放| 国产精品扒开腿做爽爽爽软件| 香蕉成人久久| 在线视频免费在线观看一区二区| 欧美一区久久久| 国产精品1区| 911精品国产| 欧美日韩黑人| 99久久婷婷这里只有精品| 国产理论在线| 99久久精品网| 99国产精品久久久久久久成人热| 亚洲不卡av不卡一区二区| 欧美日韩视频网站| 久久久久国产精品一区二区| 久久久久美女| 91p九色成人| 欧美国产专区| 国产精品一线| 国产美女高潮在线| 国产成人精品一区二区三区在线| 日产精品一区二区| 欧美特黄一区| 免费日韩视频| 伊人久久亚洲美女图片| 日韩一区欧美二区| 视频一区中文字幕| 日本天堂一区| 亚洲三级欧美| 亚洲欧美久久久| 亚洲欧美日韩国产综合精品二区| 少妇精品久久久| 欧美日韩99| 中文在线资源| 日韩中文字幕不卡| 国产精品毛片久久久| 国产精品亚洲综合久久| 中文在线中文资源| 99视频精品全部免费在线视频| 亚洲美女91| 日韩欧美网址| 日韩精品中文字幕一区二区| 精品99久久| 日韩亚洲国产欧美| 国产精品4hu.www| 国产精品三上| 久久久久久自在自线| 成人一区不卡| 亚洲一区二区三区四区电影| 国产精品成人3p一区二区三区| 免费欧美日韩| 中文另类视频|