docs: def browser(request, path='', template="cloud_browser/browser.html"):
      """View files in a file path.
  
      :param request: The request.
      :param path: Path to resource, including container as first part of path.
      :param template: Template to render.
      """
  
      from itertools import islice
  
      try:
          # pylint: disable=redefined-builtin
          from future_builtins import filter
      except ImportError:
          # pylint: disable=import-error
          from builtins import filter
  
      # Inputs.
      container_path, object_path = path_parts(path)
      incoming = request.POST or request.GET or {}
  
      marker = incoming.get('marker', None)
      marker_part = incoming.get('marker_part', None)
      if marker_part:
          marker = path_join(object_path, marker_part)
  
      # Get and adjust listing limit.
      limit_default = settings.CLOUD_BROWSER_DEFAULT_LIST_LIMIT
  
      def limit_test(num):
          return num > 0 and (MAX_LIMIT is None or num <= MAX_LIMIT - 1)
  
      limit = get_int(incoming.get('limit', limit_default),
                      limit_default,
                      limit_test)
  
      # Q1: Get all containers.
      #     We optimize here by not individually looking up containers later,
      #     instead going through this in-memory list.
      # TODO: Should page listed containers with a ``limit`` and ``marker``.
      conn = get_connection()
      containers = conn.get_containers()
  
      marker_part = None
      container = None
      objects = None
      if container_path != '':
          # Find marked container from list.
          def cont_eq(container):
              return container.name == container_path
          filtered_conts = filter(cont_eq, containers)
          cont_list = list(islice(filtered_conts, 1))
          if not cont_list:
              raise Http404("No container at: %s" % container_path)
  
          # Q2: Get objects for instant list, plus one to check "next".
          container = cont_list[0]
          objects = container.get_objects(object_path, marker, limit + 1)
          marker = None
  
          # If over limit, strip last item and set marker.
          if len(objects) == limit + 1:
              objects = objects[:limit]
              marker = objects[-1].name
              marker_part = relpath(marker, object_path)
  
      return render(request, template,
                    {'path': path,
                     'marker': marker,
                     'marker_part': marker_part,
                     'limit': limit,
                     'breadcrumbs': _breadcrumbs(path),
                     'container_path': container_path,
                     'containers': containers,
                     'container': container,
                     'object_path': object_path,
                     'objects': objects})