Opened 16 years ago
Closed 16 years ago
#8322 closed (invalid)
Admin fails to add a slash between MEDIA_URL and upload_to
Reported by: | Owned by: | nobody | |
---|---|---|---|
Component: | contrib.admin | Version: | |
Severity: | Keywords: | ||
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
With MEDIA_URL="/media" and upload_to="somefolder" the admin, while uploading files properly, shows the link to the newly uploaded file as “/mediasomefolder/filename” without the slash.
Expected: to add a slash.
For consistency, the trailing slash should never be required on paths.
Change History (4)
comment:1 by , 16 years ago
Resolution: | → invalid |
---|---|
Status: | new → closed |
Version: | 1.0-alpha |
comment:2 by , 16 years ago
Opps, I meant to link to http://www.djangoproject.com/documentation/settings/#media-url
comment:3 by , 16 years ago
Resolution: | invalid |
---|---|
Status: | closed → reopened |
I believe that requirement should be dropped.
The 1.0 alpha code mentions MEDIA_URL six times:
/usr/share/python-support/python-django/django :) egrep '\<MEDIA_URL\>' -r . ./db/models/base.py: return urlparse.urljoin(settings.MEDIA_URL, getattr(self, field.attname)).replace('\\', '/') ./conf/global_settings.py:MEDIA_URL = '' ./conf/project_template/settings.py:MEDIA_URL = '' ./core/context_processors.py: return {'MEDIA_URL': settings.MEDIA_URL} ./contrib/admin/widgets.py: (_('Currently:'), settings.MEDIA_URL, value, value, _('Change:'))) ./forms/widgets.py: return urljoin(settings.MEDIA_URL,path)
See how it uses urljoin in all places but one, django/contrib/admin/widgets.py:89:
output.append('%s <a target="_blank" href="%s%s">%s</a> <br />%s ' % \ (_('Currently:'), settings.MEDIA_URL, value, value, _('Change:')))
If it’s changed to read:
output.append('%s <a target="_blank" href="%s">%s</a> <br />%s ' % \ (_('Currently:'), urlparse.urljoin(settings.MEDIA_URL, value), value, _('Change:')))
then it won’t matter whether MEDIA_URL ends in a slash or not.
It’s a convention that comes perhaps from shell scripts that paths should not have trailing slashes, $PREFIX/bin where PREFIX=/usr is more readable and self-documenting than ${PREFIX}bin where PREFIX=/usr/. To my mind, ‘href="%s/%s"’ is very clear while ‘href="%s%s"’ is much less so (the latter could have been filename and extension, for example). And urljoin is even more readable.
comment:4 by , 16 years ago
Resolution: | → invalid |
---|---|
Status: | reopened → closed |
Please ignore the last comment, I misunderstood how urljoin works.
Though it would be quite fine not to require the URLs to end in slashes.
MEDIA_URL
must have a trailing slash per the documentation http://www.djangoproject.com/documentation/settings/#media-root.