personalizados - tipos de formularios en django
ValidaciĆ³n de formulario personalizado (1)
Para validar un solo campo por su cuenta, puede usar un método clean_FIELDNAME () en su formulario, por lo que para el correo electrónico:
def clean_email(self):
email = self.cleaned_data[''email'']
if User.objects.filter(email=email).exists():
raise ValidationError("Email already exists")
return email
luego, para los campos co-dependientes que dependen el uno del otro, puede sobrescribir el método clean()
formularios que se ejecuta después de que todos los campos (como el email
anterior) hayan sido validados individualmente:
def clean(self):
form_data = self.cleaned_data
if form_data[''password''] != form_data[''password_repeat'']:
self._errors["password"] = ["Password do not match"] # Will raise a error message
del form_data[''password'']
return form_data
No estoy seguro de dónde obtuvo clean_message()
, pero parece que se trata de un método de validación realizado para un campo de message
que no parece existir en su formulario.
Lea esto para más detalles:
Tengo una forma bastante simple:
from django import forms
class InitialSignupForm(forms.Form):
email = forms.EmailField()
password = forms.CharField(max_length=255, widget = forms.PasswordInput)
password_repeat = forms.CharField(max_length=255, widget = forms.PasswordInput)
def clean_message(self):
email = self.clean_data.get(''email'', '''')
password = self.clean_data.get(''password'', '''')
password_repeat = self.clean_data.get(''password_repeat'', '''')
try:
User.objects.get(email_address = email)
raise forms.ValidationError("Email taken.")
except User.DoesNotExist:
pass
if password != password_repeat:
raise forms.ValidationError("The passwords don''t match.")
¿Es así como se realiza la validación de formulario personalizado? Necesito evaluar en el email
que actualmente no existen usuarios con esa dirección de correo electrónico. También necesito evaluar esa password
y password_repeat
coincidencia password_repeat
. ¿Cómo puedo hacer esto?