Opened 14 years ago

Closed 13 years ago

Last modified 13 years ago

#13804 closed (fixed)

URLField validation fails with "://" on the path and no scheme

Reported by: Samus_ Owned by: nobody
Component: Forms Version: dev
Severity: Keywords:
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

according to RFC3986[1] urls containing colons on the path are valid but the current validation fails when the scheme is missing and there's an empty path:

Python 2.6.4rc2 (r264rc2:75497, Oct 20 2009, 02:55:11)
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.VERSION
(1, 3, 0, 'alpha', 0)
>>> from django.forms import URLField
>>> f = URLField()
>>> f.clean('www.example.com/://')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/samus/django-trunk/django/forms/fields.py", line 164, in clean
    self.run_validators(value)
  File "/home/samus/django-trunk/django/forms/fields.py", line 153, in run_validators
    raise ValidationError(errors)
django.core.exceptions.ValidationError: [u'Enter a valid URL.']

discussion: http://groups.google.com/group/django-developers/browse_thread/thread/7b6780645ac882a7

[1] http://www.rfc-ref.org/RFC-TEXTS/3986/chapter3.html#sub3

Attachments (1)

URLField.diff (1.5 KB ) - added by Samus_ 14 years ago.

Download all attachments as: .zip

Change History (5)

by Samus_, 14 years ago

Attachment: URLField.diff added

comment:1 by Adam Nelson, 14 years ago

I think urlsplit should be used instead of a custom regex. If scheme is None, then use 'http' as the default and rebuild the url out of the component parts. Don't use scheme='http' as that has a weird issue with urls like '/hello/world' not getting the default scheme.

comment:2 by Johannes Dollinger, 14 years ago

Triage Stage: UnreviewedAccepted

comment:3 by Chris Beaven, 13 years ago

Resolution: fixed
Status: newclosed

(In [14657]) Fixes #13804 -- URLField validation failure for a url containing ':' on the path and no scheme

comment:4 by Chris Beaven, 13 years ago

(In [14658]) Fixes #13804 -- URLField validation failure for a url containing ':' on the path and no scheme. Backport of r14657

Note: See TracTickets for help on using tickets.
Back to Top