Поле EmailField

Поле EmailField применяется в формах Django для проверки корректности email-адресов. Оно использует встроенный валидатор EmailValidator, который проверяет, что введенное значение соответствует формату email-адреса. Поле может принимать аргументы max_length для ограничения длины, min_length для минимальной длины, а также стандартные аргументы формы, такие как required, label, help_text и другие.

Синтаксис

pythonfrom django import forms

class MyForm(forms.Form):
  email = forms.EmailField(**options)

Пример

Давайте создадим простую форму для ввода email-адреса:

pythonfrom django import forms

class ContactForm(forms.Form):
  email = forms.EmailField(
    label='Email',
    max_length=100,
    required=True,
    help_text='Введите ваш email-адрес'
  )

Пример

Давайте создадим форму с полем email и обработаем ее в контроллере:

pythonfrom django import forms

class SubscribeForm(forms.Form):
  email = forms.EmailField(
    label='Email',
    max_length=200,
    required=True
  )
  name = forms.CharField(
    label='Name',
    max_length=50,
    required=True
  )

# В контроллере
def subscribe(request):
  if request.method == 'POST':
    form = SubscribeForm(request.POST)
    if form.is_valid():
      email = form.cleaned_data['email']
      name = form.cleaned_data['name']
      # Обработка подписки
  else:
    form = SubscribeForm()

Пример

Давайте используем поле EmailField в ModelForm для модели пользователя:

pythonfrom django.db import models
from django import forms

class UserProfile(models.Model):
  username = models.CharField(max_length=30)
  email = models.EmailField(max_length=100)

class UserProfileForm(forms.ModelForm):
  class Meta:
    model = UserProfile
    fields = ['username', 'email']

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

python"Форма создана с полями username и email"

Пример

Давайте проверим валидацию поля EmailField при вводе некорректного адреса:

pythonfrom django import forms

class RegisterForm(forms.Form):
  email = forms.EmailField(
    label='Email',
    max_length=100,
    required=True
  )

# Создаем форму с некорректным email
form = RegisterForm({
  'email': 'invalid-email'
})

if form.is_valid():
  print("Форма валидна")
else:
  print("Ошибки формы:", form.errors)

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

python"Ошибки формы: {'email': ['Enter a valid email address.']}"

Пример

Давайте укажем минимальную длину для поля email:

pythonfrom django import forms

class SignupForm(forms.Form):
  email = forms.EmailField(
    label='Email',
    max_length=200,
    min_length=10,
    required=True
  )

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

  • поле CharField,
    которое используется для текстовых полей
  • поле URLField,
    которое валидирует URL-адреса
  • валидатор EmailValidator,
    который проверяет корректность email-адресов
  • метод is_valid,
    который запускает валидацию формы