Hace unos meses ya os conté mi experiencia en Google Code Lab realizado en Córdoba, donde tuve la oprtunidad de comprobar que … tenía que conocer Goolge App Engine. En las entradas anteriores hemos comentado la teoría sobre GAE, pero ahora sí que vamos a trabajar utilizando webapp2, veremos cómo trabajar con las plantillas jinja2, y ponerlo bonito con Twitter Bootstrap, y mucho más!
Empezamos ….
Probando Google App Engine for Python
Para probar GAE con Python, lo primero es descargarse e instalar Google App Engine SDK for Python, que puedes encontrar aquí: https://developers.google.com/appengine/downloads?hl=es. Yo he seleccionado Python, pero también está disponible para otros lenguajes como PHP, Go y Java, así que … opciones tienes varias!
En la instalación verifica que la máquina tenga instalado Python 2.7 como pre-requisito:
Lo siguiente es aceptar los términos, seleccionar el directorio donde quieres instalar la aplicación, siguiente, siguiente …. y en un minuto ya lo tienes instalado.
Probando Google App Engine con Python
Antes de lanzarnos a probar GAE, nada mejor que saber qué librerias están incluidas, y que puedes verlas aquí: https://developers.google.com/appengine/docs/python/tools/libraries27. Cómo puedes comprobar, incluye una selección bastante interesante, porque incluye NumPy, MatPlotLib, MySQLdb, pyCripto, yaml, lxml, django, … En fin, que tenemos más que suficiente para divertirnos!!
Una vez lanzado, tenemos lo siguiente:
Hacemos una prueba, y creamos una aplicación desde File / Add New Application, y completamos los datos como el nombre de la aplicación y la ruta donde se almacena, así como el motor de Python y los puertos para acceder:
Y ya lo tenemos, preparado para correr:
Le damos a Run, y vamos al navegador, al puerto que hemos seleccionado:
Y ya tenemos nuestra aplicación corriendo.
Diseccionando la aplicación
No hemos hecho absolutamente nada, y … el solo ha escrito el “hola mundo“, así que … vamos a la ruta y comprobamos que la aplicación es un directorio y dentro del mismo, hay una serie de ficheros:
Básicamente, tenemos el favicon, seguido de dos ficheros yaml y de nuestro fichero fuente en python (y su compilado .pyc).
import webapp2 class MainHandler(webapp2.RequestHandler): def get(self): self.response.write('Hello world!') app = webapp2.WSGIApplication([ ('/', MainHandler) ], debug=True)
Cómo puedes comprobar, utiliza el framework webapp2 de Python.
NOTA: No he subido el código del proyecto porque … no creo que sea necesario! De todas formas, puedes ver la aplicación aquí.
Aprendiendo webApp2
Aparentemente, todo ha sido fácil hasta ahora, así que … vamos con un pequeño ejemplo. El código anterior lo modificamos, y le añadimos una variable html donde mostraremos un pequeño formulario, y un botón de enviar. Al utilizar el método post, se ejecutará MainHandler.post donde mostrará un mensaje.
import webapp2 root = '/' html = """ <html lang="es"> <head><title>Probando Google App Engine for Python</title></head> <body> <h1>Probando Google App Engine for Python</h1> <p>Cargado %d veces</p> <form method="post"> <label for="nombre">Nombre</label> <input name="nombre" id="nombre" type="text" value="" /> <input type="submit" value="Enviar"> </form> </body> </html> """ class MainHandler(webapp2.RequestHandler): def post(self): nombre = self.request.get("nombre") if len(nombre) == 0: self.redirect(root) mensaje = ('Hola ... %s' % (nombre)) self.response.out.write(mensaje) def get(self): self.response.write(html) app = webapp2.WSGIApplication([(root, MainHandler)], debug=True)
Y lo vemos funcionando:
Introducimos un nombre, y vemos el resultado:
Y hasta aquí la entrada de hoy, con este pequeño ejemplo donde se muestra cómo trabajar con el framework webapp2.
Buen día!