WTForms Validator NoneOf 未正确激活

WTForms Validator NoneOf is not activating properly

我正在尝试制作一个表单,在 WTForms 中使用空格和逗号来回退用户名。我尝试使用 NoneOf 验证器,但它没有激活。有什么建议么?我将用户名命名为 rusername 以消除我的页面与登录页面的冲突。

这是我的表格供参考。

class RegistrationForm(FlaskForm):
    rusername = StringField(_l('Username'), validators=[DataRequired(), NoneOf([',', ' '], "Invalid value, can't be any of: %(values)s")])
    rpassword = PasswordField(_l('Password'), validators=[DataRequired()])
    rpassword2 = PasswordField(_l('Repeat Password'), validators=[DataRequired(), EqualTo('rpassword')])
    recaptcha = RecaptchaField()
    signupsubmit = SubmitField(_l('Register'))

    def validate_rusername(self, rusername):
        user = User.query.filter_by(username=rusername.data).first()
        if user is not None:
            raise ValidationError(_('Username taken :( Please use a different one.'))

这是模板中的代码。它加载良好并且运行良好,但 NoneOf 验证不 运行.

{{ registrationForm.rusername(placeholder='Username', rows='1', maxlength='300', class='input form-control') }}

NoneOf 验证器检查是否完全匹配(例如用户名中的错误词)。如果要进行 regexp-like 验证,则需要使用 Regexp() validator.

rusername = StringField(_l('Username'), validators=[
    DataRequired(), 
    Regexp('^[\w-]+$', message='Username can contain only alphanumeric characters (and _, -).'),
])

allows 用户名包含字母数字字符、下划线和破折号。您也可以添加其他特殊字符。