2012-08-13 8 views
6

Dato un indirizzo di posta elettronica (es: [email protected]), come convalidare che il dominio ("esempio.com") sia incluso in un determinato elenco di domini. Se il dominio ("esempio.com") non si trova nell'elenco specificato, il modulo dovrebbe generare qualche tipo di errore.Come convalidare il dominio dell'indirizzo email nel modulo?

Questo è quello che ho finora in forms.py

class UserCreationFormExtended(UserCreationForm): 
    email = forms.EmailField(required=True) 

    class Meta: 
     model = User 
     fields = ("username", "email", "password1", "password2",) 

    def clean_email(self): 
     data = self.cleaned_data['email'] 
     domain = data.split('@')[1] 
     domain_list = ["gmail.com", "yahoo.com", "hotmail.com",] 
     if domain not in domain_list: 
      raise forms.ValidationError["Please enter an Email Address with a valid domain"] 
     return data 

    def save(self, commit=True): 
     user = super(UserCreationFormExtended, self).save(commit=False) 
     user.email = self.cleaned_data["email"] 
     if commit: 
      user.save() 
     return user 

Con questo codice, sto ottenendo l'errore " 'tipo' oggetto non ha attributo 'getitem'", che ripercorre la linea "raise forms.ValidationError [...]" nel mio codice.

Qualcuno può vedere cosa sto facendo male? Grazie per l'aiuto!

risposta

3

è necessario utilizzare () invece di [] nella vostra linea raise, in questo modo:

raise forms.ValidationError("Please enter a valid Penn Email Address") 
+3

wow , Sono un idiota. Grazie! – goelv

+1

@goelv: Si prega di accettare la risposta. – RanRag

2

Penso che la linea ...

raise forms.ValidationError["Please enter an Email Address with a valid domain"] 

Dovrebbe essere

raise forms.ValidationError("Please enter an Email Address with a valid domain")