Crear páginas web con Bottle: Python Web Framework (1ª parte)
En la entrada anterior vimos como crear aplicaciones web en python. Un framework para aplicaciones web es un framework diseñado para apoyar el desarrollo de sitios web dinámicos, aplicaciones web y servicios web. Y un framework es un conjunto de herramientas y programas que nos facilitan la realización y el desarrollo de un producto software. En este artículo vamos a usar un web framework escrito en Python para desarrollar páginas web. Vamos a usar el framework bottle que podemos definir cómo indica en su página oficial:
Bottle is a fast, simple and lightweight WSGI{.reference.external} micro web-framework for Python{.reference.external}.
Instalación de Bottle
Para obtener la última versión del framework vamos a usar la utilidad pip que nos permita la instalación de aplicaciones python:
# apt-get install python-pip
# pip install bottle
Empezamos con el “Hola Mundo”
Vamos a ir estudiando distintos ejemplos para ir introduciendo los distintos conceptos sobre bottle. El primer ejemplo vamos a realizar una página web que nos de la bienvenida:
from bottle import route, run
@route('/hello')
def hello():
return "<h1>Hola mundo</h1>"
run(host='localhost', port=8080, debug=True)
- La utilidad
@router
(en inglés framework decorator) nos permite definir las rutas de la URL que vamos a tratar. En este ejemplo cuando accedemos ahttp://localhost:8080/hello
veremos nuestra página web. - Para cada ruta o conjunto de rutas se define una función que debe devolver el código html que se mostrará al acceder a la ruta especificada.
- La función
run()
ejecuta un servidor web, en este caso se puede acceder desde localhost en el puerto 8080, esto nos permite ir probando cómo va quedando nuestra aplicación web.
Trabajando con rutas dinámicas
Una ruta dinámica nos permite definir rutas utilizando variables, por lo que podemos filtrar más de una URL. Veamos un ejemplo:
from bottle import route, run
@route('/')
@route('/hello/<name>')
def greet(name='Stranger'):
return 'Hello %s, how are you?'%name
run(host='localhost', port=8080, debug=True)
- En este ejemplo vemos como definimos dos rutas que van a mostrar la misma página web.
- La segunda ruta es dinámica ya que el segundo parámetro es una variable.
-
El valor de la variable de la ruta hay que enviarla a la función. En este caso hemos utilizado un parámetro con un valor por defecto (“Stranger”) en la función.
</table>
Formularios. Envío de información por el método POST
Si usamos rutas dinámicas estamos accediendo a la página web usando el método GET de forma predeterminada. Podemos crear rutas dónde indiquemos que hemos usado el método POST para recibir la información. Veamos un ejemplo:
from bottle import Bottle,route,run,request
@route('/login')
def login():
return '''
<form action="/login" method="post">
Username: <input name="username" type="text" />
Password: <input name="password" type="password" />
<input value="Login" type="submit" />
</form>'''
@route('/login',method='POST')
def do_login():
username = request.forms.get('username')
password = request.forms.get('password')
if username=="pepe" and password=="asdasd":
return "<p>Your login information was correct.</p>"
else:
return "<p>Login failed.</p>"
run(host='localhost', port=8080)
- En este ejemplo hemos definido dos rutas que se corresponden con la misma URL, pero la segunda será seleccionada cuando se haya enviado información usando el método POST (en este ejemplo se envía la información de un formulario usando ese método).
- El objeto
request
almacena la información recibida. Con el métodorequest.forms.get
podemos obtener el parámetro que indicamos con el atributoname
en el elementoinput
del formulario.
Todos los ejemplos que hemos estudiado lo puedes encontrar en el siguiente repositorio GitHub: https://github.com/josedom24/bottle_lm. En la próxima entrada, estudiaremos las plantillas de bottle, que nos permitirán el desarrollo de páginas web de una forma muy sencilla y flexible.
Comments
Miguel Alejandro
Apenas conoci este framework que es menos concido pero se ve simple y elegante ojala saques contendio mas actualizado por favor
José Domingo Muñoz
Hola Miguel,
no creo que actualice las entradas del framework bottle. Existen framework más completos e iguales de fácil. Te invito que veas flask, en esta página tienes algunas entradas sobre ese framework.
Un saludo
José Domingo Muñoz
Hola Miguel,
Existen framework más completos e iguales de fácil. Te invito que veas flask, en esta página tienes algunas entradas sobre ese framework.
Un saludo
Miguel Alejandro
Gracias, la verdad es que ya toque flask pero vi bottle y lo note mas simple jaja igual gracias por la recomendacion, saludos.
Leave a Comment
Your email address will not be published. Required fields are marked *