2012-08-13 14 views
6

Bei einer E-Mail-Adresse (z. B. [email protected]) kann ich bestätigen, dass die Domain ("example.com") in einer bestimmten Liste von Domains enthalten ist. Wenn die Domäne ("example.com") nicht in der angegebenen Liste enthalten ist, sollte das Formular einen Fehler verursachen.Wie validiere ich die Domäne der E-Mail-Adresse im Formular?

Dies ist, was ich forms.py in

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 

Mit diesem Code so weit, ich bin den Fehler bekommen „‚Typ‘Objekt hat kein Attribut‚getitem‘“, die auf den Spuren Zeile "raise forms.ValidationError [...]" in meinem Code.

Kann jemand sehen, was ich falsch mache? Danke für die Hilfe!

Antwort

3

Sie benötigen () statt [] in Ihrer raise Linie zu verwenden, wie folgt aus:

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

wow , Ich bin ein Idiot. Vielen Dank! – goelv

+1

@goelv: Bitte akzeptieren Sie die Antwort. – RanRag

2

ich die Linie denken ...

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

sein sollte

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