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

Валидатор validate_domain_name

Валидатор validate_domain_name применяется к полям форм Django для проверки, является ли переданное значение корректным доменным именем. Он проверяет, соответствует ли строка правилам DNS, включая допустимые символы, длину сегментов и общую длину домена. Валидатор используется по умолчанию в полях типа URLField и EmailField, но может быть применен и отдельно к любому текстовому полю.

Основные параметры валидатора: allow_unicode (разрешает использование Unicode-символов), message (кастомное сообщение об ошибке) и code (код ошибки). По умолчанию allow_unicode имеет значение False, что ограничивает домены только ASCII-символами.

Синтаксис

from django.core.validators import validate_domain_name from django import forms class MyForm(forms.Form): domain = forms.CharField(validators=[validate_domain_name])

Пример

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

from django.core.validators import validate_domain_name from django import forms class DomainForm(forms.Form): domain = forms.CharField( max_length=100, validators=[validate_domain_name], label="Domain name" ) # Valid domain form = DomainForm({'domain': 'example.com'}) if form.is_valid(): res = form.cleaned_data['domain'] print(res)

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

"example.com"

Пример

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

from django.core.validators import validate_domain_name from django import forms class DomainForm(forms.Form): domain = forms.CharField( max_length=100, validators=[validate_domain_name], label="Domain name" ) # Invalid domain (underscore not allowed) form = DomainForm({'domain': 'my_site.com'}) if not form.is_valid(): res = form.errors['domain'] print(res)

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

"Enter a valid domain name."

Пример

Используем валидатор с поддержкой Unicode-символов для проверки доменов с национальными символами:

from django.core.validators import validate_domain_name from django import forms class UnicodeDomainForm(forms.Form): domain = forms.CharField( max_length=100, validators=[validate_domain_name(allow_unicode=True)], label="Domain name" ) # Unicode domain (example with Russian characters) form = UnicodeDomainForm({'domain': 'пример.рф'}) if form.is_valid(): res = form.cleaned_data['domain'] print(res)

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

"пример.рф"

Пример

Добавим кастомное сообщение об ошибке для валидатора:

from django.core.validators import validate_domain_name from django import forms class CustomDomainForm(forms.Form): domain = forms.CharField( max_length=100, validators=[ validate_domain_name( message="Please enter a valid domain name" ) ], label="Domain name" ) # Invalid domain form = CustomDomainForm({'domain': 'invalid domain'}) if not form.is_valid(): res = form.errors['domain'] print(res)

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

"Please enter a valid domain name"

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

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