Django 有內建不少 validators ,可以多加利用加速開發速度。
其中最常用到的其中一項應該是 email 驗證了。
本文環境
- python 3
- django 1.11
EmailValidator
要做 email 驗證可以利用 EmailValidator ,最簡單的用法為:
from django.core.validators import EmailValidator
from django.core.exceptions import ValidationError
validator = EmailValidator()
try:
validator('[email protected]')
except ValidationError:
print('Bad!')
else:
print('Good!')
EmailValidator 如果驗證失敗會 raise ValidationError ,所以要 catch 這個例外後再做後續處理。
另外, EmailValidator
也可以指定 whitelist ,預設的 EmailValidator
在驗證 email 的 domain 時,是利用正規表示式進行驗證,但是如果有額外指定 whitelist 的話,whitelist 中的 domain 就不會經過正規表示式的檢查。
By default, a regular expression (the domain_regex attribute) is used to validate whatever appears after the @ sign. However, if that string appears in the whitelist, this validation is bypassed. If not provided, the default whitelist is [’localhost']
以下是額外指定 whitelist 的用法:
from django.core.validators import EmailValidator
from django.core.exceptions import ValidationError
validator = EmailValidator(whitelist=['gmail.com', 'yahoo.com', 'hotmail.com'])
try:
validator('[email protected]')
except ValidationError:
print('Bad!')
else:
print('Good!')
更多相關用法可以看 EmailValidator 。