Cómo pasar un error de validación a una plantilla
Tengo una regla de validación de IP como:
>>> validate_ipv46_address("1.1.1")
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/local/lib/python2.7/site-packages/django/core/validators.py", line 125, in validate_ipv46_address
raise ValidationError(_('Enter a valid IPv4 or IPv6 address.'), code='invalid')
ValidationError: [u'Enter a valid IPv4 or IPv6 address.']
Y tengo una forma que actualmente funciona como ...
class CacheCheck(forms.Form):
type = forms.TypedChoiceField(choices=TYPE_CHOICES, initial='FIXED')
record = forms.TypedChoiceField(choices=RECORD_CHOICES, initial='FIXED')
hostname = forms.CharField(max_length=100)
validate_hostname = RegexValidator(regex=r'[a-zA-Z0-9-_]*\.[a-zA-Z]{2,6}')
def clean(self):
cleaned_data = super(CacheCheck, self).clean()
record = cleaned_data.get("record")
hostname = cleaned_data.get("hostname", "")
if record == "PTR":
validate_ipv46_address(hostname)
elif record == "A":
validate_hostname(hostname)
return cleaned_data
Sin embargo, hay algunas cosas sobre las que no estoy claro. Actualmente, si introduzco una IP incorrecta, todavía me devuelve los datos limpiados. Entonces, ¿qué hace realmente el método cleaner_data? Además, ¿cómo pasaría cualquier error de validación a la plantilla?
Gracias,