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开头的字符串时,它不会给我validation错误。

试试这个:

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,则应在运算符中使用。另一方面,您的代码正在比较两个字符串,因此只有当值仅为字母S时,它才会返回true。但是,如果您想查看字符串是否以字母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')

希望这有帮助:(

最新更新