code: def zip_response(request, filename, files):
      
      tmp_file = NamedTemporaryFile()
      try:
          with ZipFile(tmp_file, 'w') as zip_file:
              for zip_path, actual_path in files:
                  zip_file.write(actual_path, zip_path)
          tmp_file.flush()  # Just in case
          response = FileResponse(tmp_file.name, request=request,
                                  content_type=str('application/zip'))
          response.headers['Content-disposition'] = ('attachment; filename="{0}"'
                                                     .format(filename))
          return response
      finally:
          tmp_file.close()
docs: Return a Response object that is a zipfile with name filename.
  
      :param request: The request object.
      :param filename: The filename the browser should save the file as.
      :param files: A list of mappings between filenames (path/.../file) to file
          objects.