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,

Respuestas a la pregunta(1)

Su respuesta a la pregunta