РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
460 of 818 menu

EmailValidator

Валидатор EmailValidator применяется к полям форм и моделей Django для проверки правильности формата email адресов. Он проверяет, что введенное значение соответствует стандартному формату электронной почты, включая наличие символа '@' и допустимого доменного имени. Валидатор может принимать параметры для настройки правил проверки.

Синтаксис

from django.core.validators import EmailValidator validator = EmailValidator(message=None, code=None, whitelist=None)

Пример . Использование в форме

Давайте создадим форму с полем email, использующую валидатор EmailValidator:

from django import forms from django.core.validators import EmailValidator class ContactForm(forms.Form): name = forms.CharField(max_length=100) email = forms.EmailField(validators=[EmailValidator()]) message = forms.CharField(widget=forms.Textarea) # Проверка валидного email form = ContactForm({ 'name': 'John Doe', 'email': 'john@example.com', 'message': 'Hello world!' }) print(form.is_valid())

Результат выполнения кода:

"True"

Пример

Проверим, как валидатор реагирует на некорректный email адрес:

from django import forms from django.core.validators import EmailValidator class ContactForm(forms.Form): email = forms.EmailField(validators=[EmailValidator()]) # Проверка невалидного email form = ContactForm({ 'email': 'invalid-email' }) print(form.is_valid()) print(form.errors.get('email'))

Результат выполнения кода:

"False" "Enter a valid email address."

Настройка сообщения об ошибке

Можно переопределить стандартное сообщение об ошибке через параметр message:

from django import forms from django.core.validators import EmailValidator custom_validator = EmailValidator( message='Пожалуйста, введите корректный email адрес' ) class RegistrationForm(forms.Form): email = forms.EmailField(validators=[custom_validator]) form = RegistrationForm({'email': 'bad-email'}) print(form.is_valid()) print(form.errors.get('email'))

Результат выполнения кода:

"False" "Пожалуйста, введите корректный email адрес"

Использование с моделью

Валидатор также можно использовать в моделях Django:

from django.db import models from django.core.validators import EmailValidator class UserProfile(models.Model): username = models.CharField(max_length=50) email = models.EmailField( max_length=254, validators=[EmailValidator()] ) # Создание объекта с валидным email profile = UserProfile( username='alex', email='alex@example.com' ) profile.full_clean() print('Valid')

Результат выполнения кода:

"Valid"

Допустимые домены верхнего уровня

Валидатор проверяет наличие точки в домене и корректность структуры:

from django import forms from django.core.validators import EmailValidator class TestForm(forms.Form): email = forms.EmailField(validators=[EmailValidator()]) # Проверка разных вариантов email emails = [ 'user@domain.com', 'user.name@domain.co.uk', 'user@domain', 'user@.com' ] for email in emails: form = TestForm({'email': email}) print(f'{email}: {form.is_valid()}')

Результат выполнения кода:

"user@domain.com: True" "user.name@domain.co.uk: True" "user@domain: False" "user@.com: False"

Смотрите также

  • валидатор URLValidator,
    который проверяет корректность URL адресов
  • валидатор RegexValidator,
    который выполняет проверку по регулярному выражению
  • валидатор DomainNameValidator,
    который проверяет корректность доменных имен
  • функция validate_email,
    которая является низкоуровневой оберткой валидатора
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить