2015-12-24 8 views
6

Mam pole e-mail w moim formularzu biuletyn, który wygląda tak:Django - walidacja pola zmiana wiadomość

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', ] 

Mój formularz działa, ale gdy wpisuję „ahasudah @ AHS” bez kropki dla domeny nazwa, pojawia się ten błąd "Wprowadź poprawny adres e-mail"

Gdzie to jest?

Właśnie sprawdziłem oryginalne źródło i nie mogłem znaleźć komunikatu o błędzie, aby przesłonić jak inne pola.

https://github.com/django/django/blob/master/django/forms/fields.py#L523

Wszelkie pomysły jak zastąpić tę wiadomość?

+0

myślę, że to nie jest komunikat o błędzie Django. Niektóre przeglądarki (np. Chrome) sprawdzają typ wejścia, jeśli podasz '' –

+0

To jest django, zawiera tablicę "error_messages". – Lara

+0

Czy możesz dzielić się swoimi modelami? – DhiaTN

Odpowiedz

3

W zasadzie można to zrobić na dwa sposoby: w dwóch różnych szczeblach:

  1. Można to zrobić na poziomie walidacji formularza:
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', ] 
  1. Drugi sposób na poziomie modelu:

2.1. można zrobić tak samo jak w formie:

email = models.EmailField(error_messages={'invalid':"you custom error message"}) 

2.2. lub użyć Django built-in Validators:

from django.core.validators import EmailValidator 

    email = models.EmailField(validators=[EmailValidator(message="your custom message")]) # in you model class 
Powiązane problemy