Я сделал валидатор для поля в форме Джанго, которую я сделал.Вот валидатор:
from django.core.exceptions import ValidationError
from django.utils.translation import ugettext_lazy
def validate_value(value):
if value.isalpha():
if len(value) != 1:
raise ValidationError(
ugettext_lazy('Invalid zone value: %(value)s'),
params={'value': value}
)
elif value.isdecimal():
if int(value) == 0:
raise ValidationError(
ugettext_lazy('Invalid zone value: %(value)s'),
params={'value': value}
)
else:
raise ValidationError(
ugettext_lazy('Invalid zone value: %(value)s'),
params={'value': value}
)
То, что делает этот валидатор, берет строку и проверяет, является ли она одной буквой или цифрой.Если это не то или иное число, равное нулю, возникает ошибка проверки.Например, «a» и «3» будут приняты, но «a1» вызовет ошибку.Ниже приведена форма, к которой прикреплен валидатор:
from django import forms
from values.validators import validate_value
class LetterOrNumberForm(forms.Form):
value = forms.CharField(validators=[validate_value])
Проблема возникает, когда я проверяю форму.Что должна делать форма при вводе неверного ввода, это показать ошибку проверки над полем.Когда я добавляю значение, которое должно пройти, например «а» или «3», форма работает нормально.Но когда я вставляю неверный ввод, такой как «a1», Django падает, и я получаю эту ошибку:
'NoneType' object has no attribute 'isdecimal'
Шаблон и представление довольно стандартны для форм Django, поэтому я сомневаюсь, что проблема есть, иесли я возьму этот валидатор и настрою его на чистую функцию формы, он на самом деле работает.Тем не менее, я хочу использовать валидатор.Кто-нибудь знает, что может быть причиной проблемы?Благодаря.