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

Валидатор validate_email

Валидатор validate_email применяется к полям форм для проверки, что введенное значение является корректным email-адресом. Он проверяет формат адреса на соответствие стандартам RFC, включая наличие символа '@', доменной части и допустимых символов. Валидатор автоматически используется в поле EmailField, но может быть применен и к другим текстовым полям через аргумент validators. При обнаружении некорректного адреса валидатор выбрасывает исключение ValidationError с соответствующим сообщением.

Валидатор принимает необязательный параметр message, который позволяет переопределить стандартное сообщение об ошибке. Также можно передать параметр code для указания кода ошибки, что полезно при локализации или кастомизации обработки ошибок.

Синтаксис

from django.core.validators import validate_email validate_email(value)

С параметром message:

from django.core.validators import validate_email validate_email(value, message="Invalid email address")

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

Создадим форму с полем для email с использованием валидатора:

from django import forms from django.core.validators import validate_email class ContactForm(forms.Form): name = forms.CharField(max_length=100) email = forms.CharField( max_length=254, validators=[validate_email] ) message = forms.CharField(widget=forms.Textarea)

Пример . С кастомным сообщением

Переопределим стандартное сообщение об ошибке:

from django import forms from django.core.validators import validate_email class SubscriptionForm(forms.Form): email = forms.CharField( max_length=254, validators=[ validate_email( message="Пожалуйста, введите корректный email" ) ] )

Пример . С проверкой в view

Используем валидатор напрямую в представлении:

from django.core.validators import validate_email from django.core.exceptions import ValidationError from django.http import JsonResponse def check_email(request): email = request.GET.get('email', '') try: validate_email(email) res = {"valid": True, "message": "Email is valid"} except ValidationError as e: res = {"valid": False, "message": str(e)} return JsonResponse(res)

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

{"valid": true, "message": "Email is valid"}

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

{"valid": false, "message": "Enter a valid email address."}

Пример . С моделью и ModelForm

Используем валидатор в модели и форме:

from django.db import models from django.core.validators import validate_email from django import forms class UserProfile(models.Model): username = models.CharField(max_length=50) email = models.EmailField(validators=[validate_email]) created_at = models.DateTimeField(auto_now_add=True) class UserProfileForm(forms.ModelForm): class Meta: model = UserProfile fields = ['username', 'email'] def clean_email(self): email = self.cleaned_data['email'] try: validate_email(email) except ValidationError as e: raise ValidationError("Invalid email format") return email

Пример . Обработка ошибок

Обработаем ошибки валидации при сохранении формы:

from django.shortcuts import render from django.core.exceptions import ValidationError from django.core.validators import validate_email def register_user(request): if request.method == 'POST': email = request.POST.get('email', '') try: validate_email(email) # Сохранение данных res = "User registered successfully" except ValidationError as e: res = f"Error: {e.message}" return render(request, 'register.html', {'result': res})

Результат выполнения кода при успешной валидации:

"User registered successfully"

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

"Error: Enter a valid email address."

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

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