Mis favoritos | Español | Acceder

Uso del framework webapp

El estándar CGI es sencillo, pero escribir manualmente todo el código que utiliza sería muy laborioso. Los frameworks de las aplicaciones web se encargan de gestionar esta información para que puedas centrarte en la programación de las funciones de tu aplicación. Google App Engine admite cualquier framework creado en su totalidad con Python que utilice el estándar CGI (y cualquier framework compatible con WSGI que utilice un adaptador de CGI), incluidos Django, CherryPy, Pylons y web.py. Puedes asociar el framework que elijas al código de tu aplicación copiando el código de la estructura en el directorio de la aplicación.

App Engine incluye un sencillo framework para aplicaciones web denominado webapp. El framework webapp está instalado en el entorno de App Engine y en el kit de desarrollo de software (SDK), por lo que no tendrás que asociarlo al código de tu aplicación para utilizarlo. Utilizaremos webapp para el resto de este tutorial.

¡Hola, webapp!

Una aplicación webapp consta de tres partes:

  • una o varias clases RequestHandler que procesan solicitudes y generan respuestas,
  • una instancia de WSGIApplication que dirige las solicitudes entrantes a los controladores en función de su URL,
  • una rutina principal que ejecuta WSGIApplication con un adaptador de CGI.

Vamos a reescribir nuestro amistoso saludo como una aplicación webapp. Edita helloworld/helloworld.py y sustituye su contenido por el siguiente:

from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

class MainPage(webapp.RequestHandler):
  def get(self):
    self.response.headers['Content-Type'] = 'text/plain'
    self.response.out.write('Hello, webapp World!')

application = webapp.WSGIApplication(
                                     [('/', MainPage)],
                                     debug=True)

def main():
  run_wsgi_app(application)

if __name__ == "__main__":
  main()

Vuelve a cargar http://localhost:8080/ en tu navegador para ver la nueva versión en acción. (Si has detenido el servidor web, vuelve a iniciarlo ejecutando el comando descrito en "Hello, World!").

Funciones de webapp

El módulo webapp está incluido en el paquete google.appengine.ext. Este módulo se facilita con el SDK y también se encuentra en el entorno de tiempo de ejecución de producción.

Este código define un controlador de solicitudes (MainPage) asignado a la URL raíz (/). Cuando webapp recibe una solicitud GET HTTP para la URL /, crea una instancia de la clase MainPage y ejecuta el método get de esa instancia. Se puede obtener información sobre la solicitud dentro del método con self.request. Normalmente, el método establece las propiedades en self.response para preparar la respuesta y finaliza. webapp envía una respuesta basada en el estado final de la instancia de MainPage.

La propia aplicación se representa mediante una instancia de webapp.WSGIApplication. El parámetro debug=true transmitido a su constructor indica a webapp que imprima seguimientos de pila de los resultados del navegador si un controlador encuentra un error o genera una excepción no detectada. Si lo deseas, puedes eliminar esta opción de la versión final de tu aplicación.

La función run_wsgi_app() utiliza una instancia WSGIApplication (u otro objeto de aplicación compatible con WSGI) y la ejecuta en el entorno CGI de App Engine. run_wsgi_app() es similar al adaptador de WSGI a CGI proporcionado por el módulo wsgiref de la biblioteca estándar Python, pero incluye unas cuantas funciones adicionales. Por ejemplo, puede detectar automáticamente si la aplicación está en ejecución en el servidor de desarrollo o en App Engine y mostrar los errores en el navegador si está en ejecución en el servidor de desarrollo.

Utilizaremos algunas otras funciones de webapp más adelante en este tutorial. Para obtener más información sobre webapp, consulta la referencia de webapp.

Siguiente...

Los frameworks hacen que el desarrollo de las aplicaciones web sea más rápido y sencillo y reducen la posibilidad de errores. webapp es sólo uno de los múltiples frameworks disponibles para Python. A continuación añadiremos algunas funciones al framework que estamos utilizando.

Para continuar, consulta la sección Uso del servicio de usuarios.