Fixed #15598 -- Updated static URL helper to be no-op on non-local prefixes. Thanks, traff.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@15839 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Jannis Leidel 2011-03-15 20:13:21 +00:00
parent 5050e30507
commit ad4118be44
2 changed files with 8 additions and 3 deletions

View File

@ -15,12 +15,11 @@ def static(prefix, view='django.views.static.serve', **kwargs):
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) ) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
""" """
if not settings.DEBUG: # No-op if not in debug mode or an non-local prefix
if not settings.DEBUG or (prefix and '://' in prefix):
return [] return []
elif not prefix: elif not prefix:
raise ImproperlyConfigured("Empty static prefix not permitted") raise ImproperlyConfigured("Empty static prefix not permitted")
elif '://' in prefix:
raise ImproperlyConfigured("URL '%s' not allowed as static prefix" % prefix)
return patterns('', return patterns('',
url(r'^%s(?P<path>.*)$' % re.escape(prefix.lstrip('/')), view, kwargs=kwargs), url(r'^%s(?P<path>.*)$' % re.escape(prefix.lstrip('/')), view, kwargs=kwargs),
) )

View File

@ -297,6 +297,12 @@ development::
# ... the rest of your URLconf goes here ... # ... the rest of your URLconf goes here ...
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) ) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
.. note::
The helper function will only be operational in debug mode and if
the given prefix is local (e.g. ``/static/``) and not a URL (e.g.
``http://static.example.com/``).
.. _staticfiles-production: .. _staticfiles-production:
Serving static files in production Serving static files in production