MaxLengthValidator
Валидатор MaxLengthValidator применяется к полям форм для проверки максимальной длины вводимой строки. Он принимает обязательный аргумент limit_value - максимально допустимое количество символов, а также необязательный аргумент message для кастомизации сообщения об ошибке. Валидатор автоматически вызывается при валидации формы и добавляет ошибку, если длина строки превышает установленный лимит.
Синтаксис
from django.core.validators import MaxLengthValidator
validator = MaxLengthValidator(limit_value, message=None)
Пример
Базовое использование валидатора в поле формы:
from 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)]
)
Пример
Кастомизация сообщения об ошибке:
from django import forms
from django.core.validators import MaxLengthValidator
class UserForm(forms.Form):
username = forms.CharField(
validators=[
MaxLengthValidator(
limit_value=30,
message="Имя пользователя не может превышать 30 символов"
)
]
)
Пример
Использование валидатора в модели:
from 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)]
)
Пример
Валидация данных в форме с использованием экземпляра валидатора:
from 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
Пример
Использование валидатора в представлении для ручной проверки данных:
from 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)
Результат выполнения кода:
"True"
Смотрите также
-
валидатор
MinLengthValidator,
который проверяет минимальную длину строки -
валидатор
MaxValueValidator,
который проверяет максимальное числовое значение -
валидатор
MinValueValidator,
который проверяет минимальное числовое значение -
валидатор
RegexValidator,
который проверяет строку по регулярному выражению