I have an email field in my Newsletter form that looks like this:
class NewsletterForm(forms.ModelForm):
email = forms.EmailField(widget=forms.EmailInput(attrs={
'autocomplete': 'off',
'class': 'form-control',
'placeholder': _('[email protected]'),
'required': 'required'
}))
class Meta:
model = Newsletter
fields = ['email', ]
My form is working, but when I type "ahasudah@ahs" without a DOT for the domain name, I get this error "Enter a valid email address"
Where is this?
I just checked the original source and I couldn't find an error message to override like other fields.
https://github.com/django/django/blob/master/django/forms/fields.py#L523
Any ideas how to override this message?
To create such an error, you can raise a ValidationError from the clean() method. For example: from django import forms from django. core.
{{ form.as_p }} – Render Django Forms as paragraph. {{ form.as_ul }} – Render Django Forms as list.
If yes try to disable this behavior, set the novalidate attribute on the form tag As <form action="{% url 'new_page' %}", method="POST" novalidate> in your html file.
In fact you can do this in two different ways in two different level:
class NewsletterForm(forms.ModelForm):
email = forms.EmailField(
widget=forms.EmailInput(attrs={
'autocomplete': 'off',
'class': 'form-control',
'placeholder': _('[email protected]'),
'required': 'required'
}),
error_messages={'invalid': 'your custom error message'}
)
class Meta:
model = Newsletter
fields = ['email', ]
2.1. you can do the same as in the form:
email = models.EmailField(error_messages={'invalid':"you custom error message"})
2.2. or you use django built-in Validators:
from django.core.validators import EmailValidator
email = models.EmailField(validators=[EmailValidator(message="your custom message")]) # in you model class
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With