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

Поле ComboField

Поле ComboField в Django является подклассом Field и предназначено для создания составных полей формы, которые применяют несколько валидаторов и преобразований последовательно. Основное предназначение - комбинировать разные проверки для одного поля, например, проверка на максимальную длину и соответствие регулярному выражению одновременно. Поле принимает два основных аргумента: fields - список экземпляров полей, чьи валидаторы будут применены, и default_validators - дополнительные валидаторы. Данные проходят через каждый компонент поля последовательно, и если какой-либо из этапов не проходит, валидация считается неудачной.

Синтаксис

from django import forms class MyForm(forms.Form): field_name = forms.ComboField( fields=[field_class1, field_class2, ...], **kwargs )

Пример

Давайте создадим поле для ввода кода продукта, который должен быть строкой из 5 символов и содержать только цифры и буквы:

from django import forms class ProductForm(forms.Form): product_code = forms.ComboField( fields=[ forms.CharField(max_length=5), forms.RegexField(regex=r'^[A-Z0-9]+$') ], label="Product Code", help_text="Must be 5 characters of letters and numbers" )

Пример

Рассмотрим форму для ввода имени пользователя, которое должно быть длиной не более 20 символов и содержать только буквы латиницы:

from django import forms class UserForm(forms.Form): username = forms.ComboField( fields=[ forms.CharField(max_length=20), forms.RegexField(regex=r'^[a-zA-Z]+$') ], required=True, label="Username", initial="guest" )

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

# При валидных данных form = UserForm({"username": "JohnDoe"}) if form.is_valid(): print("Valid username:", form.cleaned_data["username"]) else: print("Errors:", form.errors) "Valid username: JohnDoe"

Если данные не проходят проверку, например, ввод содержит цифры:

form = UserForm({"username": "John123"}) if form.is_valid(): print("Valid") else: print("Errors:", form.errors) "Errors: {'username': ['Enter a valid value.']}"

Пример

Используем поле ComboField для проверки электронной почты, которая должна быть не длиннее 50 символов и соответствовать формату email:

from django import forms from django.core.validators import EmailValidator class ContactForm(forms.Form): email = forms.ComboField( fields=[ forms.CharField(max_length=50), forms.EmailField() ], label="Email Address", required=True )

Теперь создадим экземпляр формы и проверим её работу:

form = ContactForm({"email": "test@example.com"}) if form.is_valid(): print("Email is valid:", form.cleaned_data["email"]) else: print("Errors:", form.errors) "Email is valid: test@example.com"

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

  • поле CharField,
    которое используется для ввода строковых данных
  • поле RegexField,
    которое проверяет соответствие регулярному выражению
  • поле MultiValueField,
    которое объединяет несколько полей в одно составное значение
  • класс Form,
    который является базовым классом для всех форм
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить