#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)
Change History (5)
by , 14 years ago
Attachment: | URLField.diff added |
---|
comment:1 by , 14 years ago
comment:2 by , 14 years ago
Triage Stage: | Unreviewed → Accepted |
---|
comment:3 by , 14 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
comment:4 by , 14 years ago
Note:
See TracTickets
for help on using tickets.
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.