【问题标题】:forms.py can't validate proprely in djangoforms.py 无法在 django 中正确验证
【发布时间】:2022-08-06 21:15:16
【问题描述】:
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 开头的字符串时,它不会给我验证错误。那么,您是否打算避免不以 S 开头的字符串?因为您提供的代码正在检查字符串是否以 S 开头,如果是,它将引发异常/错误,如果不是,则可以返回字符串本身。我想我可能会错过一些东西。
  • 您的验证基本上是说任何字母 \"S\" ​​在字符串的开头,引发 forms.ValidationError(\"\")。这不是你想要的吗?
  • 也许您想检查数字 \"S\" ​​是否在 valname 中?那么它将是if \'S\' in valname:

标签: javascript python html css django


【解决方案1】:

尝试这个 :

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。希望这会有所帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-24
    • 1970-01-01
    • 2021-06-15
    • 2015-01-03
    • 2020-04-05
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多