MaxLengthValidator

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

Синтаксис

pythonfrom django.core.validators import MaxLengthValidator

validator = MaxLengthValidator(limit_value, message=None)

Пример

Базовое использование валидатора в поле формы:

pythonfrom django import forms
from django.core.validators import MaxLengthValidator

class ArticleForm(forms.Form):
  title = forms.CharField(
    max_length=100,
    validators=[MaxLengthValidator(100)]
  )
  content = forms.CharField(
    validators=[MaxLengthValidator(1000)]
  )

Пример

Кастомизация сообщения об ошибке:

pythonfrom django import forms
from django.core.validators import MaxLengthValidator

class UserForm(forms.Form):
  username = forms.CharField(
    validators=[
      MaxLengthValidator(
        limit_value=30,
        message="Имя пользователя не может превышать 30 символов"
      )
    ]
  )

Пример

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

pythonfrom django.db import models
from django.core.validators import MaxLengthValidator

class Article(models.Model):
  title = models.CharField(
    max_length=200,
    validators=[MaxLengthValidator(200)]
  )
  description = models.TextField(
    validators=[MaxLengthValidator(500)]
  )

Пример

Валидация данных в форме с использованием экземпляра валидатора:

pythonfrom django import forms
from django.core.validators import MaxLengthValidator
from django.core.exceptions import ValidationError

class RegistrationForm(forms.Form):
  email = forms.EmailField()

  def clean_email(self):
    email = self.cleaned_data['email']
    validator = MaxLengthValidator(100, "Email слишком длинный")
    validator(email)
    return email

Пример

Использование валидатора в представлении для ручной проверки данных:

pythonfrom django.core.validators import MaxLengthValidator
from django.core.exceptions import ValidationError

def validate_comment(comment_text):
  try:
    validator = MaxLengthValidator(500)
    validator(comment_text)
    return True
  except ValidationError as e:
    print("Validation error:", e.message)
    return False

res = validate_comment("This is a comment")
print(res)

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

python"True"

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

  • валидатор MinLengthValidator,
    который проверяет минимальную длину строки
  • валидатор MaxValueValidator,
    который проверяет максимальное числовое значение
  • валидатор MinValueValidator,
    который проверяет минимальное числовое значение
  • валидатор RegexValidator,
    который проверяет строку по регулярному выражению