繁体   English   中英

Django如何覆盖必填字段的表单验证

[英]Django how to override form validation for a required field

我想在我的表单上覆盖对密码字段的验证。 下面是我累了。

 def clean(self):
        super(UserRegistrationForm, self).clean()

        password = self.cleaned_data.get("password")

        if password:
            MIN_LENGTH = 6
            if len(password) < MIN_LENGTH:
                raise forms.ValidationError("Password must be at least %d characters long." % MIN_LENGTH)
        else:
            print(self._errors)
            del self._errors['password']


        return self.cleaned_data

但是,我仍然收到This field cannot be blank.的消息This field cannot be blank.

PS我这样做的原因是,如果没有为我的createUser方法分配随机密码。

编辑:

 def __init__(self, *args, **kwargs):
        super(UserRegistrationForm, self).__init__(*args, **kwargs)



        self.helper = FormHelper()
        self.helper.form_method = 'post'
        # turn off HTML5 validation
        self.helper.attrs = {'novalidate': ''}
        self.helper.form_show_labels =False

        self.helper.layout = Layout(
            HTML('Enter Password'),
            Field('email'),
            Field('password', placeholder="Password", autocomplete='off'),
            Submit('submit', 'Login to your account', css_class='btn btn-primary btn-block'),
        )

在表单的构造函数中将该字段标记为非必需:

def __init__(self, *args, **kwargs):
    super(MyForm, self,).__init__(*args, **kwargs)
    self.fields['password'].required = False

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM