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

mat*_*ts1 15 python django

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

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

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

Hie*_*yen 31

如何添加错误代码:

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

  • 来自Django核心开发人员:"我试图查看代码是否可以更改,以便选择更具体的消息.但是无法确定哪个是最具体的.有时验证器错误消息更具体,有时候这就是为什么我认为你应该使用上面的代码技巧." https://code.djangoproject.com/ticket/17051我认为这也有点合理. (2认同)

jrv*_*tti 7

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

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

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