Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/08/2012, 10:10
maroxa86
 
Fecha de Ingreso: mayo-2009
Mensajes: 9
Antigüedad: 15 años, 6 meses
Puntos: 0
Comparar dos emails mediante la validaciones de los formularios

Buenas tardes a todos

Estoy desenvolupando un pequeña aplicacion en Django y tengo un problema al comparar dos emails.
Primero os dejo el codigo para que podais mirarlo:

forms.py

Código Python:
Ver original
  1. email = forms.EmailField(label='Email')
  2. repemail = forms.EmailField(label='Repite Email')
  3.  
  4. #Validacion camp email
  5.     def clean_email(self):
  6.         email = self.cleaned_data['email']
  7.  
  8.         try:
  9.             user = User.objects.get(email=email)
  10.            
  11.         except User.DoesNotExist:
  12.             return email
  13.            
  14.         raise forms.ValidationError("El Email ja existe")
  15.  
  16.     def clean_repemail(self):
  17.  
  18.         email = self.cleaned_data.get('email'," ")
  19.        
  20.         repemail = self.cleaned_data['repemail']
  21.        
  22.         if email == repemail:
  23.  
  24.             return repemail
  25.  
  26.         raise forms.ValidationError("Los Emails no coinciden")

views.py

Código Python:
Ver original
  1. def altausu(request):
  2.  
  3.     if request.method == 'POST':
  4.         formulari = AltaForm(request.POST)
  5.         if formulari.is_valid():
  6.  
  7.             usuario = formulari.cleaned_data['usuario']
  8.             contraseña = formulari.cleaned_data['contraseña']
  9.             email = formulari.cleaned_data['email']
  10.  
  11.             #Creem un objecte User per guardar les dades de l'usuari
  12.             user = User.objects.create_user(
  13.                         username = usuario,
  14.                         email = email,
  15.                         password = contraseña
  16.                     )
  17.            
  18.             #Marquem l'usuari com a actiu
  19.             user.is_active = True
  20.  
  21.             user.save()
  22.  
  23.             return render_to_response('nouusu.html',{
  24.                                 'usuario':usuario,
  25.                             }, context_instance=RequestContext(request))
  26.     else:
  27.         formulario = AltaForm()
  28.     return render_to_response('altausu.html', {
  29.                     'formulario':formulario,
  30.                 }, context_instance=RequestContext(request))
altausu.html

Código HTML:
Ver original
  1. <table cellpadding="0" cellspacing="0" id="index_cnt">
  2.     <tr><td id="cnt_top"></td></tr>
  3.     <tr><td id="login_title">Alta Nou Usuari<hr /></td></tr>
  4.     <tr>
  5.         <td id="alta_body">
  6.             <form name='altausuari' method='post' action='/altausu/' onSubmit="validar()" autocomplete="off">{% csrf_token %}
  7.                 <table align="center">
  8.                     <tr>
  9.                         <td>
  10.                             {{ formulari.usuari.label}}
  11.                         </td>
  12.                         <td>
  13.                             <div onKeyDown="comp_usuari(altausuari)" onKeyUp="comp_usuari(altausuari)">
  14.                                 {{ formulari.usuari }}
  15.                             </div>
  16.                         </td>
  17.                         <td>
  18.                             <div id="usuari_ok" class="perfil_comp" style="background-image:url({{STATIC_URL}}img/ok.png)">
  19.                             <div id="usuari_error" class="perfil_comp" style="background-image:url({{STATIC_URL}}img/error.png); {% if formulari.usuari.errors %} visibility:visible {% endif %}" onMouseOver="error_usuari_mostrar()" onMouseOut="error_usuari_ocultar()">
  20.                             <div id="missatge_error_usuari" class="missatge_error">L'usuari ja existeix</div>
  21.                         </td>
  22.                     </tr>
  23.                     <tr>
  24.                         <td>
  25.                             {{ formulari.contrasenya.label}}
  26.                         </td>
  27.                         <td>
  28.                             <div onKeyDown="comp_contra(altausuari)" onKeyUp="comp_contra(altausuari)">
  29.                                 {{ formulari.contrasenya }}
  30.                             </div>
  31.                         </td>
  32.                         <td>
  33.                             <div id="contrasenya_ok" class="perfil_comp" style="background-image:url({{STATIC_URL}}img/ok.png)">
  34.                             <div id="contrasenya_error" class="perfil_comp" style="background-image:url({{STATIC_URL}}img/error.png); {% if formulari.contrasenya.errors %} visibility:visible {% endif %}" onMouseOver="error_contrasenya_mostrar()" onMouseOut="error_contrasenya_ocultar()">
  35.                             <div id="missatge_error_contrasenya" class="missatge_error">Longitud de la contrasenya incorrecta</div>
  36.                         </td>
  37.                     </tr>
  38.                     <tr>
  39.                         <td>
  40.                             {{ formulari.repcontrasenya.label}}
  41.                         </td>
  42.                         <td>
  43.                             <div onBlur="comp_repcontra(altausuari)" onKeyDown="comp_repcontra(altausuari)" onKeyUp="comp_repcontra(altausuari)">
  44.                                 {{ formulari.repcontrasenya }}
  45.                             </div>
  46.                         </td>
  47.                         <td>
  48.                             <div id="repcontrasenya_ok" class="perfil_comp" style="background-image:url({{STATIC_URL}}img/ok.png)">
  49.                             <div id="repcontrasenya_error" class="perfil_comp" style="background-image:url({{STATIC_URL}}img/error.png); {% if formulari.repcontrasenya.errors %} visibility:visible {% endif %}" onMouseOver="error_repcontrasenya_mostrar()" onMouseOut="error_repcontrasenya_ocultar()">
  50.                             <div id="missatge_error_repcontrasenya" class="missatge_error">Les contrasenyes no coincideixen</div>
  51.                         </td>
  52.                     </tr>
  53.                     <tr>
  54.                         <td>
  55.                             {{ formulari.email.label}}
  56.                         </td>
  57.                         <td>
  58.                             <div onKeyDown="comp_email(altausuari)" onKeyUp="comp_email(altausuari)">
  59.                                 {{ formulari.email }}
  60.                             </div>
  61.                         </td>
  62.                         <td>
  63.                             <div id="email_ok" class="perfil_comp" style="background-image:url({{STATIC_URL}}img/ok.png)">
  64.                             <div id="email_error" class="perfil_comp" style="background-image:url({{STATIC_URL}}img/error.png); {% if formulari.email.errors %} visibility:visible {% endif %}" onMouseOver="error_email_mostrar()" onMouseOut="error_email_ocultar()">
  65.                             <div id="missatge_error_email" class="missatge_error">El Email ja existeix</div>
  66.                         </td>
  67.                     </tr>
  68.                     <tr>
  69.                         <td>
  70.                             {{ formulari.repemail.label}}
  71.                         </td>
  72.                         <td>
  73.                             <div onKeyDown="comp_repemail(altausuari)" onKeyUp="comp_repemail(altausuari)">
  74.                                 {{ formulari.repemail }}
  75.                             </div>
  76.                         </td>
  77.                         <td>
  78.                             <div id="repemail_ok" class="perfil_comp" style="background-image:url({{STATIC_URL}}img/ok.png)">
  79.                             <div id="repemail_error" class="perfil_comp" style="background-image:url({{STATIC_URL}}img/error.png); {% if formulari.repemail.errors %} visibility:visible {% endif %}" onMouseOver="error_repemail_mostrar()" onMouseOut="error_repemail_ocultar()">
  80.                             <div id="missatge_error_repemail" class="missatge_error">Els Email no coincideixen</div>
  81.                         </td>
  82.                     </tr>
  83.                     <tr>
  84.                         <td></td>
  85.                         <td>
  86.                             <input type="submit" id="alta" name="alta" value="Donar d'Alta" disabled="disabled"/>
  87.                         </td>
  88.                     </tr>
  89.                 </table>
  90.                 <br />
  91.             </form>
  92.         </td>
  93.     </tr>
  94.     <tr>
  95.         <td id="login_pretail"></td>
  96.     </tr>

Mi problema es que cuando quiero validar que los dos correos son iguales si el campo email ja es erróneo porque ja existe entonces la validación del campo repemail ja me da erronea directamente y no se como arreglar ese problema.

Gracias por la ayuda que me podáis ofrecer de antemano.