Django正则表达式验证器消息没有任何效果

时间:2013-07-20 08:34:46

标签: python django

我试图得到它,以便验证器告诉你“用户名必须是字母数字”。到目前为止这是我的代码。我已经确认它会在正确的时间验证。唯一的问题是,无论我尝试什么,RegexValidator仍然会丢失默认错误(“输入有效值”)。

这是我的代码。我也试过没有前面的'message =',它仍然说“输入有效值”,而不是“用户名必须是字母数字”

user = CharField(
    max_length=30,required=True,
    validators=[
        RegexValidator('^[a-zA-Z0-9]*$',
            message='Username must be Alphanumeric'
        ),
    ]
)

4 个答案:

答案 0 :(得分:28)

如何添加错误代码:

user = CharField(
    max_length=30,
    required=True,
    validators=[
        RegexValidator(
            regex='^[a-zA-Z0-9]*$',
            message='Username must be Alphanumeric',
            code='invalid_username'
        ),
    ]
)

答案 1 :(得分:4)

我也无法运行RegexValidator。但我试图通过保存模型实例来引发错误。它不会这样工作!只有在使用ModelForms时,才会自动调用验证器。

https://docs.djangoproject.com/en/dev/ref/validators/#how-validators-are-run

  

请注意,保存模型时不会自动运行验证程序,但如果您使用的是ModelForm,它将在表单中包含的任何字段上运行验证程序。“

答案 2 :(得分:0)

尝试传递messsage as,

user = CharField(
    max_length=30,
    required=True,
    validators=[
        RegexValidator(
            regex=r'^[a-zA-Z0-9]*$',
            message=_('Username must be Alphanumeric'),
        ),
    ]
)

答案 3 :(得分:0)

a validate user name here should contain at least one minuscule letter, one capital letter and one numeric, if i understand your code.
to complete Virendra Rajput answer correct the regex with that:
regex=r'^[a-zA-Z0-9]*$'   start with the r'