Esempio n. 1
0
def serve(request, path, document_root=None, insecure=False, **kwargs):
    """
    Serve static files below a given point in the directory structure or
    from locations inferred from the staticfiles finders.

    To use, put a URL pattern such as::

        (r'^(?P<path>.*)$', 'djangocg.contrib.staticfiles.views.serve')

    in your URLconf.

    It uses the djangocg.views.static view to serve the found files.
    """
    if not settings.DEBUG and not insecure:
        raise ImproperlyConfigured(
            "The staticfiles view can only be used in "
            "debug mode or if the the --insecure "
            "option of 'runserver' is used"
        )
    normalized_path = posixpath.normpath(unquote(path)).lstrip("/")
    absolute_path = finders.find(normalized_path)
    if not absolute_path:
        if path.endswith("/") or path == "":
            raise Http404("Directory indexes are not allowed here.")
        raise Http404("'%s' could not be found" % path)
    document_root, path = os.path.split(absolute_path)
    return static.serve(request, path, document_root=document_root, **kwargs)
Esempio n. 2
0
 def serve(self, request):
     relative_url = request.path[len(self.base_url[2]):]
     return serve(request, relative_url, document_root=self.get_base_dir())