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

MinLengthValidator

Валидатор MinLengthValidator используется в формах Django для проверки того, что длина строкового значения не меньше указанного минимального порога. Этот валидатор особенно полезен при работе с полями, где требуется установить минимальное количество символов, например, для паролей, логинов или текстовых полей. Валидатор принимает один обязательный аргумент - limit_value, задающий минимально допустимую длину строки, и опциональный параметр message для кастомизации сообщения об ошибке.

Синтаксис

from django.core.validators import MinLengthValidator validator = MinLengthValidator(limit_value, message=None)

Пример

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

from django import forms from django.core.validators import MinLengthValidator class UserRegistrationForm(forms.Form): username = forms.CharField( label="Username", max_length=30, validators=[MinLengthValidator(5)], help_text="Username must be at least 5 characters long." )

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

from django.test import TestCase form = UserRegistrationForm(data={'username': 'john'}) print(form.is_valid()) print(form.errors)

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

False {'username': ['Ensure this value has at least 5 characters (it has 4).']}

Пример

Создадим форму для проверки пароля с минимальной длиной 8 символов и кастомным сообщением об ошибке:

from django import forms from django.core.validators import MinLengthValidator class PasswordForm(forms.Form): password = forms.CharField( label="Password", widget=forms.PasswordInput, validators=[ MinLengthValidator( limit_value=8, message="Password must be at least 8 characters long." ) ] )

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

form = PasswordForm(data={'password': 'pass123'}) if not form.is_valid(): print("Form errors:") for field, errors in form.errors.items(): print(f"{field}: {', '.join(errors)}")

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

"Form errors:" "password: Password must be at least 8 characters long."

Пример

Комбинируем MinLengthValidator с другими валидаторами для более строгой проверки поля:

from django import forms from django.core.validators import MinLengthValidator, RegexValidator class SecurePasswordForm(forms.Form): password = forms.CharField( label="Password", widget=forms.PasswordInput, validators=[ MinLengthValidator(12), RegexValidator( regex=r'^(?=.*[A-Z])(?=.*\d)', message="Password must contain at least one uppercase letter and one digit." ) ], help_text="Password must be at least 12 characters long, with uppercase and digit." )

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

form = SecurePasswordForm(data={'password': 'weakpass'}) print(f"Is valid: {form.is_valid()}") print("Errors:") for field, errors in form.errors.items(): for error in errors: print(f" - {error}")

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

"Is valid: False" "Errors:" " - Ensure this value has at least 12 characters (it has 8)." " - Password must contain at least one uppercase letter and one digit."

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

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