2012-08-13 13 views
6

Podając adres e-mail (np. [email protected]), w jaki sposób sprawdzić, czy domena ("example.com") znajduje się na podanej liście domen. Jeśli domena ("example.com") nie znajduje się na podanej liście, formularz powinien wywołać pewien błąd.Jak zweryfikować domenę adresu e-mail w formularzu?

To, co mam tak daleko w 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 

Z tego kodu, otrzymuję błąd „«typ»obiekt ma bez atrybutu«GetItem»”, który śledzi do linia "raise forms.ValidationError [...]" w moim kodzie.

Czy ktoś może zobaczyć, co robię źle? Dzięki za pomoc!

Odpowiedz

3

Trzeba użyć () zamiast [] w linii raise, tak:

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

wow , Jestem idiotą. Dzięki! – goelv

+1

@goelv: Proszę przyjąć odpowiedź. – RanRag

2

myślę wiersz ...

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

Powinny być

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