diff --git a/django/forms/fields.py b/django/forms/fields.py index 113a5aab22..6fe25a9043 100644 --- a/django/forms/fields.py +++ b/django/forms/fields.py @@ -583,6 +583,7 @@ class URLField(CharField): self.validators.append(validators.URLValidator(verify_exists=verify_exists, validator_user_agent=validator_user_agent)) def to_python(self, value): + value = super(URLField, self).to_python(value) if value: url_fields = list(urlparse.urlsplit(value)) if not url_fields[0]: @@ -601,7 +602,7 @@ class URLField(CharField): # the path portion may need to be added before query params url_fields[2] = '/' value = urlparse.urlunsplit(url_fields) - return super(URLField, self).to_python(value) + return value class BooleanField(Field): widget = CheckboxInput diff --git a/tests/regressiontests/forms/tests/fields.py b/tests/regressiontests/forms/tests/fields.py index e1b7fe00c6..7cbe2eaccf 100644 --- a/tests/regressiontests/forms/tests/fields.py +++ b/tests/regressiontests/forms/tests/fields.py @@ -686,6 +686,10 @@ class FieldsTests(SimpleTestCase): url = u'http://t\xfcr.djangoproject.com/' self.assertEqual(url, f.clean(url)) + def test_urlfield_not_string(self): + f = URLField(required=False) + self.assertRaisesMessage(ValidationError, "[u'Enter a valid URL.']", f.clean, 23) + # BooleanField ################################################################ def test_booleanfield_1(self):