Last active
December 26, 2015 09:39
-
-
Save chriskief/7130801 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from django.forms import Form | |
from django.forms import ValidationError | |
from django.forms import FileField | |
# Django 1.6 Version | |
class BaseForm(Form): | |
def _clean_fields(self): | |
for name, field in self.fields.items(): | |
# value_from_datadict() gets the data from the data dictionaries. | |
# Each widget type knows how to retrieve its own data, because some | |
# widgets split data over several HTML fields. | |
value = field.widget.value_from_datadict(self.data, self.files, | |
self.add_prefix(name)) | |
try: | |
if isinstance(field, FileField): | |
initial = self.initial.get(name, field.initial) | |
value = field.clean(value, initial) | |
else: | |
if isinstance(value, basestring): | |
value = field.clean(value.strip()) | |
else: | |
value = field.clean(value) | |
self.cleaned_data[name] = value | |
if hasattr(self, 'clean_%s' % name): | |
value = getattr(self, 'clean_%s' % name)() | |
self.cleaned_data[name] = value | |
except ValidationError, e: | |
self._errors[name] = self.error_class(e.messages) | |
if name in self.cleaned_data: | |
del self.cleaned_data[name] | |
# Django 1.7 Version | |
# (makes use of new add_error API - https://docs.djangoproject.com/en/1.7/ref/forms/api/#django.forms.Form.add_error) | |
class BaseForm(Form): | |
# strip leading or trailing whitespace | |
def _clean_fields(self): | |
for name, field in self.fields.items(): | |
# value_from_datadict() gets the data from the data dictionaries. | |
# Each widget type knows how to retrieve its own data, because some | |
# widgets split data over several HTML fields. | |
value = field.widget.value_from_datadict(self.data, self.files, self.add_prefix(name)) | |
try: | |
if isinstance(field, FileField): | |
initial = self.initial.get(name, field.initial) | |
value = field.clean(value, initial) | |
else: | |
if isinstance(value, basestring): | |
value = field.clean(value.strip()) | |
else: | |
value = field.clean(value) | |
self.cleaned_data[name] = value | |
if hasattr(self, 'clean_%s' % name): | |
value = getattr(self, 'clean_%s' % name)() | |
self.cleaned_data[name] = value | |
except ValidationError as e: | |
self.add_error(name, e) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment