Forms.py не может проверить подлинность в django
def clean_name(self):
valname = self.cleaned_data['name']
# if len(valname) < 3:
# raise forms.ValidationError('name must be at least 3 characters')
# return valname # return the value if no error
if valname[0] == 'S':
raise forms.ValidationError('name cannot contain the letter S')
return valname # return the value if no error
здесь я применяю имя валидации, которое должно начинаться с S, но когда я ввожу строку, которая не может начинаться с S, она не выдает мне ошибку валидации.
Попробуйте это :
def clean_name(self):
valname = self.cleaned_data['name']
# if len(valname) < 3:
# raise forms.ValidationError('name must be at least 3 characters')
# return valname # return the value if no error
if 'S' in valname[0]:
raise forms.ValidationError('name cannot contain the letter S')
return valname # return the value if no error
Если вы хотите посмотреть, содержит ли строка букву S, вам следует использовать оператор in. С другой стороны, ваш код сравнивает две строки, поэтому он вернет true только в том случае, если значением будет только буква S. Но если вы хотите узнать, начинается ли строка с буквы S, вам следует использовать метод startswith, например, так:
def clean_name(self):
valname = self.cleaned_data['name']
# if len(valname) < 3:
# raise forms.ValidationError('name must be at least 3 characters')
# return valname # return the value if no error
if valname[0].startswith("S") :
raise forms.ValidationError('name cannot contain the letter S')
надеюсь, это помогло :)