Introducción a web.py

Introducción

Se trata del software escrito por Aaron Swartz para la creación de webs dinámicas con Python. Oficialmente fue publicado mientras trabajaba en reddit.com (la cual posteriormente fue rescrita utilizando otro tipo de herramientas). «Simple como potente», «Es el framework anti-framework. web.py no se interpone en tu camino»; algunas de las características y opiniones por las cuales se da a conocer en el sitio oficial webpy.org. Es de dominio público, por lo que puede aplicarse para el desarrollo de cualquier tipo de proyecto.

La aplicación

Una aplicación completa en web.py:

import web

urls = (
    '/', 'Index'
)

class Index:
    def GET(self):
        return "Hola, mundo!"

if __name__ == "__main__":
    app = web.application(urls, globals())
    app.run()

Guardando y ejecutado el ejemplo, podemos acceder a nuestra web abriendo el navegador e ingresando http://localhost:8080/ en la barra de direcciones. Si todo funciona bien, deberías ver en pantalla «Hola, mundo!» (sin comillas).

Veamos línea por línea el código:

import web

Importa el módulo web.py.

urls = (
    '/', 'Index'
)

En esta porción de código le indicamos a web.py cómo queremos que sea nuestra estructura de URL. En la cadena ubicada antes de la coma («,») indicamos la ruta (en este caso la principal) y luego, la clase a la cual va a ser enviada la petición. Por ejemplo, si quisiéramos agregar una sección de descargas a nuestra web, podríamos hacerlo de la siguiente manera:

urls = (
    '/', 'Index',
    '/descargas', 'Descargas'
)

Continuando con la siguiente porción del código del ejemplo:

class Index:
    def GET(self):
        return "Hola, mundo!"

Escribimos la clase Index, a la cual se va a derivar la solicitud enviada por el navegador en caso de encontrarse en la ruta «/», es decir, la página principal. Si retomáramos el ejemplo de las descargas, deberíamos crear una clase Descargas, a la cual se deriva la solicitud al dirigirse a la ruta http://localhost:8080/descargas.

Como puede observarse, se define la función GET, la cual va a ser llamada cuando cualquiera de los visitantes de nuestra web ingrese a la página principal (ya que dicha clase está asociada con la dirección «/»). El valor de retorno será enviado al navegador para mostrar el contenido en pantalla. Existe una segunda función POST, la cual es utilizada para enviar formularios, y no entraré en detalle.

if __name__ == "__main__":
    app = web.application(urls, globals())
    app.run()

Creamos una instancia de la clase web.application en la cual indicamos la estructura que hemos escogido (urls), abarcando las clases contenidas en todo el archivo (globals). Por último, llamamos al método run para asegurarnos que web.py comience a funcionar.

Ejecutando

Para correr el código aportado y explicado en las líneas anteriores, suponiendo que guardaron el ejemplo anterior como ejemplo.py, inicia la línea de comandos y escribe:

>>> python ejemplo.py

En donde el mensaje «http://0.0.0.0:8080/» indicará que web.py ya está funcionando y escuchando mediante el puerto 8080, el cual se puede alternar especificando el número luego del nombre del archivo:

>>> python ejemplo.py 1234

Ahora nuestra web estará escuchando peticiones en el puerto 1234, dirección http://localhost:1234/.

Para correr el ejemplo en Windows, bastaría con dar doble click sobre el archivo ejemplo.py, suponiendo que Python está asociado con la extensión .py.

Más información

Esta fue una pequeña introducción y reseña del framework, ya que cuenta con diversas herramientas muy interesantes, como su sistema de plantillas o templates, las cuales no fueron mencionadas en la corriente entrada. Resulta muy sencillo de entender, aprender, y realmente desarrollar aplicaciones web con esta herramienta resulta placentero.

Pueden encontrar las descargas, todo tipo de documentación, manuales y demás herramientas en la página oficial (en inglés): http://webpy.org/.

Ante cualquier duda o inquietud, no olvides dejar tu comentario.

Versión

Python 2.7

Donar ❤️

¿Te gusta nuestro contenido? ¡Ayudanos a seguir creciendo con una donación!

Deja una respuesta