2012-08-13 13 views
6

Dada una dirección de correo electrónico (por ej .: [email protected]), ¿cómo puedo validar que el dominio ("ejemplo.com") está incluido en una lista dada de dominios? Si el dominio ("ejemplo.com") no está en la lista especificada, el formulario debe generar algún tipo de error.¿Cómo validar el dominio de la dirección de correo electrónico en el formulario?

Esto es lo que tengo hasta ahora en 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 este código, estoy consiguiendo el error " 'tipo' objeto no tiene atributo 'GetItem'" que remonta a la línea "raise forms.ValidationError [...]" en mi código.

¿Alguien puede ver lo que estoy haciendo mal? ¡Gracias por la ayuda!

Respuesta

3

Es necesario utilizar () en lugar de en su línea []raise, así:

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

wow , Soy un idiota. ¡Gracias! – goelv

+1

@goelv: Por favor, acepte la respuesta. – RanRag

2

creo que la línea ...

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

Debe ser

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