Index: django/newforms/fields.py
===================================================================
--- django/newforms/fields.py	(revision 6000)
+++ django/newforms/fields.py	(working copy)
@@ -405,6 +405,9 @@
         self.user_agent = validator_user_agent
 
     def clean(self, value):
+        # If no URL scheme given, assume http://
+        if value and ':' not in value:
+            value = u'http://%s' % value
         value = super(URLField, self).clean(value)
         if value == u'':
             return value
Index: tests/regressiontests/forms/tests.py
===================================================================
--- tests/regressiontests/forms/tests.py	(revision 6000)
+++ tests/regressiontests/forms/tests.py	(working copy)
@@ -1589,10 +1589,6 @@
 Traceback (most recent call last):
 ...
 ValidationError: [u'Enter a valid URL.']
->>> f.clean('example.com')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid URL.']
 >>> f.clean('http://')
 Traceback (most recent call last):
 ...
@@ -1623,10 +1619,6 @@
 Traceback (most recent call last):
 ...
 ValidationError: [u'Enter a valid URL.']
->>> f.clean('example.com')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid URL.']
 >>> f.clean('http://')
 Traceback (most recent call last):
 ...
@@ -1680,6 +1672,15 @@
 ...
 ValidationError: [u'Ensure this value has at most 20 characters (it has 37).']
 
+URLField should prepend 'http://' if no scheme was given
+>>> f = URLField(required=False)
+>>> f.clean('example.com')
+u'http://example.com'
+>>> f.clean('')
+u''
+>>> f.clean('https://example.com')
+u'https://example.com'
+
 # BooleanField ################################################################
 
 >>> f = BooleanField()
