在django中,如何禁用EmailValidator?

时间:2018-02-13 11:19:53

标签: python django django-forms

基于AbstractBaseUser,我创建了自己的个人资料。在配置文件类中,我定义了

def nonfunc(self):
    pass

email = models.EmailField(
    verbose_name='email address',
    max_length=255,
    unique=True,
    primary_key=True,
    validators = [nonfunc,nonfunc],
)

我不想使用django的电子邮件验证,我禁用了html5验证。

<form method="post"  novalidate> 

但是当我输入无效的电子邮件然后提交表单时,它返回了 Enter a valid email address.

如何完全禁用django默认电子邮件验证?

1 个答案:

答案 0 :(得分:0)

您可以使用TextInput小部件进行渲染。

1-如果您使用模型形式:

您应该通过添加Meta类来覆盖默认小部件:

class MyUserForm(ModelForm):
    class Meta:
        model = MyUser
        fields = ('email',)
        widgets = {
            'email': TextInput(),
        }

2-如果您使用简单的Form

只需使用小部件实例化参数

即可
email = forms.EmailField(widget=forms.TextInput())

它应该变成这样:

<input name="email" required="" id="id_email" type="email">

进入这个:

<input name="email" required="" id="id_email" type="text">

因此禁用客户端的内置电子邮件输入验证。

但是:

请记住,它不会关闭后端验证。只有前端一个。但是,由于您似乎只是尝试用自制的JS替换前端验证,这应该没问题。