BogoToBogo
  • Home
  • About
  • Big Data
  • Machine Learning
  • AngularJS
  • Python
  • C++
  • go
  • DevOps
  • Kubernetes
  • Algorithms
  • More...
    • Qt 5
    • Linux
    • FFmpeg
    • Matlab
    • Django 1.8
    • Ruby On Rails
    • HTML5 & CSS

Bottle micro web services framework 2 : static files

Bottle_Logo.png




Bookmark and Share





bogotobogo.com site search:



List of Bottle Micro Web Services Tutorials

  1. Introduction
  2. Static files
  3. Template
  4. json
  5. Bucket List App I - sqlite, route, and template
  6. Bucket List App II - get & post
  7. Bucket List App III - Editing
  8. Bucket List App IV - route validation, regex, and static_file
  9. Bucket List App V - json
  10. json to html table
  11. Forms - Get & Post
  12. Forms - Get & Post with editable and checkbox table cells



Routing static files

sample 1

static_files.py:

from bottle import route, run, static_file

@route('/')
def serve_homepage():
    return static_file('home.html', root='static/')

run(host='localhost', port=8080)

Run the script file:

$ python static_files.py
Bottle v0.12.7 server starting up (using WSGIRefServer())...
Listening on http://localhost:8080/
Hit Ctrl-C to quit.

127.0.0.1 - - [04/Oct/2014 11:44:24] "GET / HTTP/1.1" 200 39

Here is the rendered page:


static_home_html.png


sample 2

st_file.py:

from bottle import route, run, static_file

@route('/static/<filename:path>')
def st(filename):
    return static_file(filename, root='static/')

run(host='localhost', port=8080)

static/myfile:

This is a file in /static/myfile.

Run the script file:

$ python st_file.py
Bottle v0.12.7 server starting up (using WSGIRefServer())...
Listening on http://localhost:8080/
Hit Ctrl-C to quit.

127.0.0.1 - - [04/Oct/2014 15:48:30] "GET /static/myfile HTTP/1.1" 304 0

Here is the rendered page:


st_file_myfile.png




sample 3 - template & image

Let's start with a simple html page:

main.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>My Bottle Home</title>
    <link rel="stylesheet" type="text/css" href="http://twitter.github.com/bootstrap/assets/css/bootstrap.css">
</head>
<body>
    <h1>Initial Home page</h1>
    <p>My image:</p>
    <img src="images/bottle.png">
</body>
</html>

main.py:

from bottle import route, run, static_file, template

HOST = 'localhost'

@route('/')
def serve_homepage():
    return template('main.html')

run(host=HOST, port=8080, debug=True)

Run the script file:


$ python main.py
Bottle v0.12.7 server starting up (using WSGIRefServer())...
Listening on http://localhost:8080/
Hit Ctrl-C to quit.

127.0.0.1 - - [04/Oct/2014 20:42:55] "GET / HTTP/1.1" 200 248

-

Here is the rendered page:


Initial_Home_Page.png


We get the same result if we rename the main.html to main.tpl, and return the tpl instead of html.

main.py:

from bottle import route, run, static_file, template

HOST = 'localhost'

@route('/')
def serve_homepage():
    return template('main.tpl')

run(host=HOST, port=8080, debug=True)

However, note that we're missing an image and the rendered page should look like this:


missing_image.png

Let's make it work. Here is main.py we're using:

from bottle import route, run, static_file, template

HOST = 'localhost'

@route('/static/<filepath:path>')
def server_static(filepath):
    return static_file(filepath, root='/home/k/TEST/Py/Bottle/')

@route('/')
def serve_homepage():
    return template('main.tpl')

run(host=HOST, port=8080, debug=True)

Note that the path ('/home/k/TEST/Py/Bottle/') in

return static_file(filepath, root='/home/k/TEST/Py/Bottle/')

is the site root directory.

main.tpl:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>My Bottle Home</title>
    <link rel="stylesheet" type="text/css" href="http://twitter.github.com/bootstrap/assets/css/bootstrap.css">
</head>
<body>
    <h1>Initial Home page</h1>
    <p>My image:</p>
    <img src="/static/bottle.png">
</body>
</html>

Here we append the '/static/' before the 'bottle.png' image.

Then, run the server:

k@k:~/TEST/Py/Bottle$ python main.py
Bottle v0.12.7 server starting up (using WSGIRefServer())...
Listening on http://localhost:8080/
Hit Ctrl-C to quit.

127.0.0.1 - - [05/Oct/2014 13:27:41] "GET / HTTP/1.1" 200 304
127.0.0.1 - - [05/Oct/2014 13:27:41] "GET /static/bottle.png HTTP/1.1" 304 0

Now, the new page will have the image rendered properly:


bottle_with_image_static.png

If we move the 'bottle.png' file from the 'root' directory into a subdirectory such as images, and modify main.tpl like this:

<p>My image in '/home/k/TEST/Py/Bottle/images':</p>
<img src="/static/images/bottle.png">

we still get the image properly rendered page:

$ python main.py
Bottle v0.12.7 server starting up (using WSGIRefServer())...
Listening on http://localhost:8080/
Hit Ctrl-C to quit.

127.0.0.1 - - [05/Oct/2014 14:50:51] "GET / HTTP/1.1" 200 311
127.0.0.1 - - [05/Oct/2014 14:50:51] "GET /static/images/bottle.png HTTP/1.1" 200 7300
127.0.0.1 - - [05/Oct/2014 14:50:52] "GET /favicon.ico HTTP/1.1" 404 742

static_image_in_images_folder.png








Ph.D. / Golden Gate Ave, San Francisco / Seoul National Univ / Carnegie Mellon / UC Berkeley / DevOps / Deep Learning / Visualization

YouTubeMy YouTube channel

Sponsor Open Source development activities and free contents for everyone.

Thank you.

- K Hong







Bottle Micro Web Services Tutorials



Introduction

Static files

Template

json

Bucket List App I - sqlite, route, and template

Bucket List App II - get & post

Bucket List App III - Editing

Bucket List App IV - route validation, regex, and static_file

Bucket List App V - json

json to html table

Forms - Get & Post

Forms - Get & Post with editable and checkbox table cells

Sponsor Open Source development activities and free contents for everyone.

Thank you.

- K Hong






Python tutorial



Python Home

Introduction

Running Python Programs (os, sys, import)

Modules and IDLE (Import, Reload, exec)

Object Types - Numbers, Strings, and None

Strings - Escape Sequence, Raw String, and Slicing

Strings - Methods

Formatting Strings - expressions and method calls

Files and os.path

Traversing directories recursively

Subprocess Module

Regular Expressions with Python

Regular Expressions Cheat Sheet

Object Types - Lists

Object Types - Dictionaries and Tuples

Functions def, *args, **kargs

Functions lambda

Built-in Functions

map, filter, and reduce

Decorators

List Comprehension

Sets (union/intersection) and itertools - Jaccard coefficient and shingling to check plagiarism

Hashing (Hash tables and hashlib)

Dictionary Comprehension with zip

The yield keyword

Generator Functions and Expressions

generator.send() method

Iterators

Classes and Instances (__init__, __call__, etc.)

if__name__ == '__main__'

argparse

Exceptions

@static method vs class method

Private attributes and private methods

bits, bytes, bitstring, and constBitStream

json.dump(s) and json.load(s)

Python Object Serialization - pickle and json

Python Object Serialization - yaml and json

Priority queue and heap queue data structure

Graph data structure

Dijkstra's shortest path algorithm

Prim's spanning tree algorithm

Closure

Functional programming in Python

Remote running a local file using ssh

SQLite 3 - A. Connecting to DB, create/drop table, and insert data into a table

SQLite 3 - B. Selecting, updating and deleting data

MongoDB with PyMongo I - Installing MongoDB ...

Python HTTP Web Services - urllib, httplib2

Web scraping with Selenium for checking domain availability

REST API : Http Requests for Humans with Flask

Blog app with Tornado

Multithreading ...

Python Network Programming I - Basic Server / Client : A Basics

Python Network Programming I - Basic Server / Client : B File Transfer

Python Network Programming II - Chat Server / Client

Python Network Programming III - Echo Server using socketserver network framework

Python Network Programming IV - Asynchronous Request Handling : ThreadingMixIn and ForkingMixIn

Python Coding Questions I

Python Coding Questions II

Python Coding Questions III

Python Coding Questions IV

Python Coding Questions V

Python Coding Questions VI

Python Coding Questions VII

Python Coding Questions VIII

Python Coding Questions IX

Python Coding Questions X

Image processing with Python image library Pillow

Python and C++ with SIP

PyDev with Eclipse

Matplotlib

Redis with Python

NumPy array basics A

NumPy Matrix and Linear Algebra

Pandas with NumPy and Matplotlib

Celluar Automata

Batch gradient descent algorithm

Longest Common Substring Algorithm

Python Unit Test - TDD using unittest.TestCase class

Simple tool - Google page ranking by keywords

Google App Hello World

Google App webapp2 and WSGI

Uploading Google App Hello World

Python 2 vs Python 3

virtualenv and virtualenvwrapper

Uploading a big file to AWS S3 using boto module

Scheduled stopping and starting an AWS instance

Cloudera CDH5 - Scheduled stopping and starting services

Removing Cloud Files - Rackspace API with curl and subprocess

Checking if a process is running/hanging and stop/run a scheduled task on Windows

Apache Spark 1.3 with PySpark (Spark Python API) Shell

Apache Spark 1.2 Streaming

bottle 0.12.7 - Fast and simple WSGI-micro framework for small web-applications ...

Flask app with Apache WSGI on Ubuntu14/CentOS7 ...

Selenium WebDriver

Fabric - streamlining the use of SSH for application deployment

Ansible Quick Preview - Setting up web servers with Nginx, configure enviroments, and deploy an App

Neural Networks with backpropagation for XOR using one hidden layer

NLP - NLTK (Natural Language Toolkit) ...

RabbitMQ(Message broker server) and Celery(Task queue) ...

OpenCV3 and Matplotlib ...

Simple tool - Concatenating slides using FFmpeg ...

iPython - Signal Processing with NumPy

iPython and Jupyter - Install Jupyter, iPython Notebook, drawing with Matplotlib, and publishing it to Github

iPython and Jupyter Notebook with Embedded D3.js

Downloading YouTube videos using youtube-dl embedded with Python

Machine Learning : scikit-learn ...

Django 1.6/1.8 Web Framework ...









Contact

BogoToBogo
contactus@bogotobogo.com

Follow Bogotobogo

About Us

contactus@bogotobogo.com

YouTubeMy YouTube channel
Pacific Ave, San Francisco, CA 94115

Pacific Ave, San Francisco, CA 94115

Copyright © 2024, bogotobogo
Design: Web Master