ProhibitNullCharactersValidator
Валидатор ProhibitNullCharactersValidator применяется к строковым полям формы и предотвращает ввод символов с кодом 0 (null-символов). Данный валидатор полезен, когда нужно гарантировать, что вводимые пользователем строки не содержат потенциально опасных или некорректных нулевых байтов. Валидатор срабатывает как для однострочных, так и для многострочных текстовых полей.
По умолчанию валидатор не требует дополнительных параметров, однако может принимать необязательный параметр message для кастомизации сообщения об ошибке.
Синтаксис
from django.core.validators import ProhibitNullCharactersValidator
# Использование в поле формы
field = forms.CharField(
validators=[ProhibitNullCharactersValidator()]
)
# С кастомным сообщением
field = forms.CharField(
validators=[ProhibitNullCharactersValidator(
message="Нулевые символы не допускаются"
)]
)
Пример
Рассмотрим базовое использование валидатора в форме для регистрации пользователя:
from django import forms
from django.core.validators import ProhibitNullCharactersValidator
class RegistrationForm(forms.Form):
username = forms.CharField(
max_length=50,
validators=[ProhibitNullCharactersValidator()]
)
email = forms.EmailField()
# Проверка формы с валидными данными
form = RegistrationForm({
'username': 'john_doe',
'email': 'john@example.com'
})
print(form.is_valid()) # "True"
# Проверка формы с null-символом
form = RegistrationForm({
'username': 'john\0doe', # Символ null
'email': 'john@example.com'
})
print(form.is_valid()) # "False"
print(form.errors['username']) # Список с сообщением об ошибке
Результат выполнения кода:
"True"
"False"
["This field contains a null character."]
Пример
Пример использования валидатора в форме создания статьи, где заголовок не должен содержать нулевые символы:
from django import forms
from django.core.validators import ProhibitNullCharactersValidator
class ArticleForm(forms.Form):
title = forms.CharField(
max_length=100,
validators=[ProhibitNullCharactersValidator()]
)
content = forms.CharField(
widget=forms.Textarea,
validators=[ProhibitNullCharactersValidator()]
)
# Пример валидации данных
data = {
'title': 'Interesting article',
'content': 'Full text of the article without null chars'
}
form = ArticleForm(data)
print(form.is_valid()) # "True"
# Невалидные данные с null-символом в заголовке
invalid_data = {
'title': 'Bad\0 title',
'content': 'Some content'
}
form = ArticleForm(invalid_data)
print(form.is_valid()) # "False"
print(form.errors['title']) # Сообщение об ошибке
Результат выполнения кода:
"True"
"False"
["This field contains a null character."]
Пример
Кастомизация сообщения об ошибке для более понятного пользователю текста:
from django import forms
from django.core.validators import ProhibitNullCharactersValidator
class CustomForm(forms.Form):
comment = forms.CharField(
widget=forms.Textarea,
validators=[ProhibitNullCharactersValidator(
message="В комментариях запрещены нулевые символы"
)]
)
# Проверка с невалидными данными
form = CustomForm({
'comment': 'Valid text \0 with null'
})
print(form.is_valid()) # "False"
print(form.errors['comment']) # Кастомное сообщение
Результат выполнения кода:
"False"
["В комментариях запрещены нулевые символы"]
Смотрите также
-
валидатор
MinLengthValidator,
который проверяет минимальную длину строки -
валидатор
MaxLengthValidator,
который проверяет максимальную длину строки -
валидатор
RegexValidator,
который проверяет строку по регулярному выражению -
поле
CharField,
которое может использовать данный валидатор