#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 , 15 years ago
| Attachment: | URLField.diff added |
|---|
comment:1 by , 15 years ago
comment:2 by , 15 years ago
| Triage Stage: | Unreviewed → Accepted |
|---|
comment:3 by , 15 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
comment:4 by , 15 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.