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

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,
    которое может использовать данный валидатор
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить