• Cómo hacer un hola mundo en Bottle, ejemplo simple.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from bottle import route, run
@route('/')
def index():
    return 'Hola Mundo!'
run()

Ejemplo:

juan@wind:~$ /usr/bin/env python holamundo.py
Bottle server starting up (using WSGIRefServer())...
Listening on http://127.0.0.1:8080/
Use Ctrl-C to quit.

localhost.localdomain - - [18/Jul/2011 18:22:09] "GET / HTTP/1.1" 200 11
localhost.localdomain - - [18/Jul/2011 18:22:09] "GET /favicon.ico HTTP/1.1" 404 687
^C
juan@wind:~$

  • Mejorando nuestro hola mundo en Bottle, ejemplo más completo, ideal para Plantilla para una App nueva.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
from bottle import route
from bottle import run
from bottle import redirect
from bottle import debug
from bottle import error
from bottle import request
from bottle import abort
import os
#
@route('/')
def index():
    return 'Hola Mundo!'

# Ejemplo de uso de bottle.request para mostrar tu direccion ip
@route('/tuip') # ingresando a esa URL devuelve tu IP
def show_ip():
    ip = request.environ.get('REMOTE_ADDR')
    return ip

# Ejemplo de uso de bottle.error para el 404, la pagina no existe
@error(404)
def mistake404(code): # Usando HTML directamente, de ejemplo.
    return '<title>bottle app</title><br><b>ERROR 404:la pagina no existe.</b>'

# Ejemplo de uso de bottle.abort para URL no permitida, error 401
@route('/restricted')
def restricted():
    abort(401, 'ERROR 401:URL no permitida.')

# Ejemplo de Redireccion bottle.redirect de URL, por URL incorrecta
@route('/index.php') # si va a index.php
def wrong():
    redirect("/") # enviarlo a "/"

###############################################################################

# Ejecucion de Main
def main():
    debug(True)# True para desarrollo, False para Produccion
    #
    # Por que es esto?: Puerto <1024 requiere Privilegios elevados
    if os.geteuid()==0: # root check
        run(host='0.0.0.0', port=80, reloader=True)
    else:
        run(host='127.0.0.1', port=8080, reloader=True)

if __name__=="__main__":
    main()

Nota: Hay más Features en Bottle_*, pero eso es suficiente para un Hola Mundo completo y didáctico.*

Disclaimer: el uso o no de SheBang/Declaracion de Encoding queda a criterio del usuario.

Fe de Erratas: seguramente hay una forma mejor de hacerlo, pero esta funciona correctamente.