20

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

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

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

4 回答 4

39

如何添加错误代码:

user = CharField(
    max_length=30,
    required=True,
    validators=[
        RegexValidator(
            regex='^[a-zA-Z0-9]*$',
            message='Username must be Alphanumeric',
            code='invalid_username'
        ),
    ]
)
于 2013-07-20T11:45:27.913 回答
7

我在运行 RegexValidator 时也遇到了麻烦。但我试图通过保存模型实例来引发错误。它不会以这种方式工作!只有在使用 ModelForms 时才会自动调用验证器。

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

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

于 2013-12-20T21:16:01.860 回答
0

尝试通过messsageas,

user = CharField(
    max_length=30,
    required=True,
    validators=[
        RegexValidator(
            regex=r'^[a-zA-Z0-9]*$',
            message=_('Username must be Alphanumeric'),
        ),
    ]
)
于 2013-07-20T08:59:57.560 回答
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'
于 2013-07-20T09:06:16.157 回答