在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ 驗(yàn)證器
編寫自定義存儲(chǔ)系統(tǒng)
高級(jí)
編寫你的第一個(gè)Django應(yīng)用,第5部分
視圖層
Django管理文檔生成器
編寫你的第一個(gè) Django 程序 第3部分
編寫你的第一個(gè)Django應(yīng)用,第6部分
模型層
中間件
測(cè)試
數(shù)據(jù)庫(kù)訪問優(yōu)化
文件上傳
中間件
驗(yàn)證器
基于類的內(nèi)建通用視圖
部署靜態(tài)文件
使用Django認(rèn)證系統(tǒng)
高級(jí)教程:如何編寫可重用的應(yīng)用
Model 類參考
Django 初探
使用Django輸出PDF
模型的實(shí)例
模型
文件上傳
進(jìn)行原始的sql查詢
面向程序員
中間件
編寫數(shù)據(jù)庫(kù)遷移
TemplateResponse 和 SimpleTemplateResponse
異常
Django中的測(cè)試
基礎(chǔ)
管理器
File對(duì)象
URL調(diào)度器
加密簽名
國(guó)際化和本地化
日志
查詢集
django-admin 和 manage.py
使用基于類的視圖處理表單
聚合
內(nèi)建基于類的視圖的API
如何使用會(huì)話
部署 Django
其它
其它核心功能
高級(jí)
Django中的密碼管理
模型元選項(xiàng)
按需內(nèi)容處理
查找 API 參考
高級(jí)
Django 的快捷函數(shù)
Django 的設(shè)置
Admin
開發(fā)過程
新手入門
基于類的視圖
模型實(shí)例參考
信號(hào)
表單素材 ( <code>Media</code> 類)
自定義查找
常見的網(wǎng)站應(yīng)用工具
模型
django.contrib.humanize
Django模版語言
點(diǎn)擊劫持保護(hù)
管理操作
編寫你的第一個(gè) Django 程序 第2部分
Django安全
模式編輯器
多數(shù)據(jù)庫(kù)
部署
基于類的視圖
內(nèi)建的視圖
視圖裝飾器
面向設(shè)計(jì)師
編寫視圖
應(yīng)用程序
如何使用WSGI 部署
參考
表單 API
文件儲(chǔ)存API
認(rèn)證
國(guó)際化和本地化
錯(cuò)誤報(bào)告
基礎(chǔ)
基礎(chǔ)
將遺留數(shù)據(jù)庫(kù)整合到Django
教程
Django異常
編寫你的第一個(gè) Django 程序 第4部分
遷移
分頁(yè)
重定向應(yīng)用
表單
從零開始
為模型提供初始數(shù)據(jù)
設(shè)置
使用Django輸出CSV
關(guān)聯(lián)對(duì)象參考
使用表單
Django 中的用戶認(rèn)證
快速安裝指南
安全問題歸檔
數(shù)據(jù)庫(kù)函數(shù)
編寫自定義的django-admin命令
高級(jí)教程
管理文件
格式本地化
基于類的通用視圖 —— 索引
安全
系統(tǒng)檢查框架
為Django編寫首個(gè)補(bǔ)丁
模板層
Widgets
編寫你的第一個(gè) Django 程序 第1部分
執(zhí)行查詢

驗(yàn)證器

編寫驗(yàn)證器

驗(yàn)證器是一個(gè)可調(diào)用的對(duì)象,它接受一個(gè)值,并在不符合一些規(guī)則時(shí)拋出ValidationError異常。驗(yàn)證器有助于在不同類型的字段之間重復(fù)使用驗(yàn)證邏輯。

例如,這個(gè)驗(yàn)證器只允許偶數(shù):

from django.core.exceptions import ValidationError

def validate_even(value):
    if value % 2 != 0:
        raise ValidationError('%s is not an even number' % value)

你可以通過字段的validators參數(shù)將它添加到模型字段中:

from django.db import models

class MyModel(models.Model):
    even_field = models.IntegerField(validators=[validate_even])

由于值在驗(yàn)證器運(yùn)行之前會(huì)轉(zhuǎn)化為Python,你可以在表單上使用相同的驗(yàn)證器:

from django import forms

class MyForm(forms.Form):
    even_field = forms.IntegerField(validators=[validate_even])

你也可以使用帶有 __call__()方法的類,來實(shí)現(xiàn)更復(fù)雜或可配置的驗(yàn)證器。例如,RegexValidator就用了這種技巧。如果一個(gè)基于類的驗(yàn)證器用于validators模型字段的選項(xiàng),你應(yīng)該通過添加deconstruct()__eq__() 方法確保它可以被遷移框架序列化。

驗(yàn)證器如何運(yùn)行

關(guān)于驗(yàn)證器如何在表單中運(yùn)行,詳見表單驗(yàn)證 。關(guān)于它們?nèi)绾卧谀P椭羞\(yùn)行,詳見 驗(yàn)證對(duì)象。要注意驗(yàn)證器不會(huì)在你保存模型時(shí)自動(dòng)運(yùn)行,但是如果你使用ModelForm,它會(huì)在任何你表單包含的字段上運(yùn)行你的驗(yàn)證器。關(guān)于模型驗(yàn)證器如何和表單交互,詳見ModelForm 文檔。

內(nèi)建的驗(yàn)證器

django.core.validators模塊包含了一系列的可調(diào)用驗(yàn)證器,用于模型和表單字段。它們?cè)趦?nèi)部使用,但是也可以用在你自己的字段上。它們可以用在field.clean() 方法之外,或者代替它。

RegexValidator

class RegexValidator([regex=None, message=None, code=None, _inversematch=None, flags=0])[source]

Parameters: * **regex** – 如果不是`None`則覆寫 [`regex`](#django.core.validators.RegexValidator.regex "django.core.validators.RegexValidator.regex")。可以是一個(gè)正則表達(dá)式字符串,或者預(yù)編譯的正則表達(dá)式對(duì)象。 * **message** – 如果不是`None`,則覆寫 [`message`](#django.core.validators.RegexValidator.message "django.core.validators.RegexValidator.message")。 * **code** – 如果不是`None`,則覆寫[`code`](#django.core.validators.RegexValidator.code "django.core.validators.RegexValidator.code")。 * **inverse_match** – 如果不是`None`,則覆寫[`inverse_match`](#django.core.validators.RegexValidator.inverse_match "django.core.validators.RegexValidator.inverse_match")。 * **flags** – 如果不是`None`,則覆寫 [`flags`](#django.core.validators.RegexValidator.flags "django.core.validators.RegexValidator.flags")。這種情況下,[`regex`](#django.core.validators.RegexValidator.regex "django.core.validators.RegexValidator.regex") ,必須是正則表達(dá)式字符串,否則拋出[`TypeError`](https://docs.python.org/3/library/exceptions.html#TypeError) 異常。

regex

用于搜索提供的value的正則表達(dá)式,或者是預(yù)編譯的正則表達(dá)式對(duì)象。通常在找不到匹配時(shí)拋出帶有 messagecode的 ValidationError異常。這一標(biāo)準(zhǔn)行為可以通過設(shè)置inverse_matchTrue來反轉(zhuǎn),這種情況下,如果找到匹配則拋出 ValidationError異常。通常它會(huì)匹配任何字符串(包括空字符串)。

message

驗(yàn)證失敗時(shí)ValidationError所使用的錯(cuò)誤信息。默認(rèn)為"Enter a valid value"。

code

驗(yàn)證失敗時(shí)ValidationError所使用的錯(cuò)誤代碼。默認(rèn)為"invalid"。

inverse_match

New in Django 1.7.

regex的匹配模式。默認(rèn)為False。

flags

New in Django 1.7.

編譯正則表達(dá)式字符串regex時(shí)所用的標(biāo)識(shí)。如果regex是預(yù)編譯的正則表達(dá)式,并且覆寫了flags,會(huì)產(chǎn)生TypeError異常。默認(rèn)為 0

EmailValidator

class EmailValidator([message=None, code=None, whitelist=None])[source]

Parameters: * **message** – 如果不是 `None`,則覆寫[`message`](#django.core.validators.EmailValidator.message "django.core.validators.EmailValidator.message")。 * **code** – 如果不是 `None`,則覆寫[`code`](#django.core.validators.EmailValidator.code "django.core.validators.EmailValidator.code")。 * **whitelist** – 如果不是`None`,則覆寫 [`whitelist`](#django.core.validators.EmailValidator.whitelist "django.core.validators.EmailValidator.whitelist")。

message

驗(yàn)證失敗時(shí)ValidationError所使用的錯(cuò)誤信息。默認(rèn)為"Enter a valid email address"。

code

驗(yàn)證失敗時(shí)ValidationError所使用的錯(cuò)誤代碼。默認(rèn)為"invalid"。

whitelist

所允許的郵件域名的白名單。通常,正則表達(dá)式(domain_regex 屬性) 用于驗(yàn)證 @ 符號(hào)后面的任何東西。但是,如果這個(gè)字符串在白名單里,就可以通過驗(yàn)證。如果沒有提供,默認(rèn)的白名單是 ['localhost']。其它不包含點(diǎn)符號(hào)的域名不能通過驗(yàn)證,所以你需要按需將它們添加進(jìn)白名單。

URLValidator

class URLValidator([schemes=None, regex=None, message=None, code=None])[source]

RegexValidator確保一個(gè)值看起來像是URL,并且如果不是的話產(chǎn)生'invalid'錯(cuò)誤代碼。

回送地址以及保留的IP空間被視為有效。同時(shí)也支持字面的IPv6地址 (RFC 2732) 以及unicode域名。

除了父類RegexValidator的可選參數(shù)之外,URLValidator接受一個(gè)額外的可選屬性:

schemes

需要驗(yàn)證的URL/URI模式列表。如果沒有提供,默認(rèn)為 ['http', 'https', 'ftp', 'ftps']。IANA 網(wǎng)站提供了 有效的URI模式的完整列表作為參考。

Changed in Django 1.7:

添加了可選的schemes 屬性。

Changed in Django 1.8:

添加了對(duì)IPv6 地址, unicode 域名, 以及含有驗(yàn)證信息的URL的支持。

validate_email

validate_email

一個(gè)不帶有任何自定義的EmailValidator實(shí)例。

validate_slug

validate_slug

一個(gè) RegexValidator實(shí)例,確保值只含有字母、數(shù)字、下劃線和連字符。

validate_ipv4_address

validate_ipv4_address

一個(gè)RegexValidator的實(shí)例,確保值是IPv4地址。

validate_ipv6_address

validate_ipv6_address[source]

使用django.utils.ipv6 來檢查是否是 IPv6 地址。

validate_ipv46_address

validate_ipv46_address[source]

使用validate_ipv4_addressvalidate_ipv6_address 值是有效的 IPv4 或 IPv6 地址。

validate_comma_separated_integer_list

validate_comma_separated_integer_list

一個(gè)RegexValidator的實(shí)例,確保值是整數(shù)的逗號(hào)分隔列表。

MaxValueValidator

class MaxValueValidator(_maxvalue, message=None)[source]

如果value 大于 max_value,拋出帶有'max_value'代碼的ValidationError 異常。

Changed in Django 1.8:

添加了message參數(shù)。

MinValueValidator

class MinValueValidator(_minvalue, message=None)[source]

如果value小于min_value,拋出帶有'min_value'代碼的ValidationError異常。

Changed in Django 1.8:

添加了message 參數(shù)。

MaxLengthValidator

class MaxLengthValidator(_maxlength, message=None)[source]

如果value的長(zhǎng)度大于max_length,拋出帶有'max_length'代碼的ValidationError 異常。

Changed in Django 1.8:

添加了message參數(shù)。

MinLengthValidator

class MinLengthValidator(_minlength, message=None)[source]

如果value的長(zhǎng)度小于min_length,拋出帶有'min_length'代碼的ValidationError異常。

Changed in Django 1.8:

添加了message 參數(shù)。

譯者:Django 文檔協(xié)作翻譯小組,原文:Data validation。

本文以 CC BY-NC-SA 3.0 協(xié)議發(fā)布,轉(zhuǎn)載請(qǐng)保留作者署名和文章出處。

Django 文檔協(xié)作翻譯小組人手緊缺,有興趣的朋友可以加入我們,完全公益性質(zhì)。交流群:467338606。

上一篇:部署 Django下一篇:新手入門