Web2py

Web2py
Información sobre la plantilla
Web2py.jpeg
Web2py. Framework de Desarrollo Web
Última versión estable1.76.5 11 de marzo de 2010
Sitio web
http://www.web2py.com

Web2py es un framework de desarrollo web de código abierto. Su objetivo principal es dar soporte al desarrollo ágil de software de aplicaciones web escalables, seguras y portables enfocadas en bases de datos. Web2py está escrito y programado en lenguaje Python. Dado que web2py fue originalmente diseñado como una herramienta de enseñanza con énfasis en la facilidad de uso y despliegue, no tiene ningún archivo de configuración a nivel de proyecto.

Introducción

Web2py fue inspirado por Ruby on Rails (RoR), y como RoR se enfoca en desarrollo rápido, favoreciendo el enfoque convención sobre configuración y siguiendo el patrón Modelo Vista Controlador (MVC). A su vez, web2py está basado en Python y provee una interfaz administrativa exhaustiva, incluye bibliotecas para manejar protocolos, y puede funcionar sobre Google App Engine.

Web2py también fue inspirado por Django y, al igual que Django, tiene la habilidad de generar formularios desde tablas de la base de datos e incluye un conjunto extensivo de validadores.

Gracias a Python, web2py es menos verboso que los frameworks basados en Java, y su sintaxis tiende a ser más limpia que la de los frameworks basados en PHP. Esto hace que las aplicaciones sean más simples de desarrollar, leer y mantener.

Características Generales

Web2py es un framework completo ya que tiene componentes incorporados para todas las funciones principales, incluyendo:

  • Pedidos y respuestas HTTP, cookies, sesiones
  • Múltiples protocolos HTML/XML, REST, ATOM y RSS, RTF y CSV, JSON, JSON-RPC y XML-RPC, AMF-RPC (Flash/Flex), y SOAP
  • API para CRUD (altas, bajas y modificaciones)
  • Mecanismos múltiples de autenticación y control de accesos basados en roles
  • Capa de abstracción de base de datos (DAL) que genera dinámicamente SQL y lo ejecuta en mútiples servidores compatbiles
  • Cache para escalabilidad basadas en RAM, disco, y memcached
  • Soporte para internacionalización
  • jQuery para programación en Ajax y efectos para la interfaz de usuario
  • Ticket: registro automático de errores con contexto.

Web2py incorpora prácticas reconocidas de la ingeniería de software como

  • El patrón Modelo Vista Controlador (MVC);
  • Auto-envío de formularios web
  • Sesiones en el servidor
  • Manejo seguro de archivos subidos.

Originalmente diseñado como una herramienta de enseñaza en la universidad DePaul, web2py tiene una curva de aprendizaje muy llana. Requiere poca o ninguna instalación o configuración, y provee un entorno de desarrollo completamente basado en web.

Web2py usa la interfaz WSGI, el protocolo orientado a Python para comunicaciones entre el servidor web y las aplicaciones. También provee manejadores para protocolos CGI y FastCGI, e incluye un servidor CherryPy wsgiserver multihilo y capaz de SSL.

Web2py tiene liberaciones frecuentes y es fácil de actualizar. A pesar de frecuentes lanzamientos, los desarrolladores de web2py no han roto la compatibilidad hacia atrás desde la versión v1.0 en 2007, y se han comprometido a no romper en el futuro.

Características Específicas

Entorno de desarrollo integrado (IDE) basado en web

Todo el desarrollo puede ser realizado (opcionalmente) vía una interfaz web, sin herramientas de terceros, dentro de la misma aplicación web2py. Cada aplicación tiene una interfaz de base de datos integrada, similar a la de Django. La IDE web también incluye un editor de código, editor html para las vistas, herramienta de pruebas y una consola basada en web.

Las aplicaciones también pueden ser creadas desde la línea de comandos o desarrolladas con otras IDEs.

Vistas Flexibles

El programa Hola Mundo con web2py en su forma más simple sin plantilla) se ve:

def hola():
    return 'Hola mundo'

Web2py incluye un lenguaje de plantilla rápido, basado en Python puro, sin requerimientos de Indentacion y un modelo de objeto de documento (DOM).

El lenguaje de plantillas funciona sin web2py. Las plantillas Joomla 1.x pueden ser convertidas a web2py.

Aun controlador sin una vista automáticamente usa una vista genérica para mostrar las variables devueltas por el controlador, permitiendo desarrollar la lógica del negocio antes de escribir el HTML. El ejemplo "Hola Mundo" usando la plantilla predeterminada:

def hola():
    return dict(saludo='Hola Mundo')

Seguridad de alto nivel

Web2py tiene un foco en la seguridad prestando mecanismos predeterminados seguros, previniendo las vulnerabilidades más comunes; nunca ha tenido reportes de incidentes de seguridad.

Sistema de Tiquets

Cada aplicación web2py viene con un Sistema de seguimiento de incidentes:

  • Si ocurre un error, es registrado y un ticket es generado para el usuarios. Esto permite seguimiento de errores
  • Los errores y el código fuente son solo accesibles por el administrador, quien puede buscar y recuperar los errores por fecha o IP del cliente. El código nunca se expone al usuario.

Planificador de tareas Portable

Cron es un mecanismo para crear y ejecutar tareas recurrentes en segundo plano. Busca por un archivo crontab en el formato estándar. Hay tres modos de operación disponibles:

  • Soft cron: cron las rutinas son revisadas después de servir el contenido web, no garantiza precisión en su ejecución.
  • Hard cron: un hilo cron se inicia al comenzar web2py.
  • System cron: las funciones cron son llamadas desde el sistema operativo

Protección del código fuente

Web2py puede compilar las aplicaciones web y estas pueden ser distribuidas en forma de bytecode, sin el código fuente. Esto ayuda pero no garantiza la protección del código fuente debido a la existencia de desensambladores y decompilador para Python con efectividad variada (archivos *.pyc y *.pyo)

Capa de abstracción de base de datos (DAL)

Web2py implementa una DAL, no un ORM. Un ORM mapea las tablas de una base de datos en clases y los registros en instancias de estas clases. La DAL en cambio mapea, de manera transparente, las tablas en instancias de una clase (Table) y los registros en instancias (DAL Set, DAL Rows, DAL Fields). Tiene una sintaxis muy similar a un ORM pero es más rápido, y puede manejar casi cualquier expresión SQL. La DAL puede ser usada sin web2py.

SQLite está incluido en Python y es la base de datos de web2py por defecto. Un cambio en la cadena de conexión permite usar Firebird, IBM DB2, Informix, Ingres, Microsoft SQL Server, MySQL, Oracle, PostgreSQL, y la Google App Engine (GAE). Especialidades:

  • Conexiones a múltiples bases de datos.
  • Creación y alteración automática de tablas.
  • Manejo automático de transacciones.
  • Transacciones distribuidas (desde web2py v1.17 con PostgreSQL, desde web2py v1.70.1 para Firebird y MySQL (experimental).
  • GAE no es un almacenamiento relacional, pero web2py emula ciertas operaciones.

Migraciones automáticas de esquema

Web2py soporta migración automática al cambiar la definición de una tabla, web2py la ALTERa. Las migraciones, sus intentos y los cambios son registrados y documentados.

Limitaciones:

  • SQLite no entiende bien las migraciones. En particular no puede alterar el tipo de datos de una columna, simplemente almacena los nuevos valores en el nuevo tipo.
  • GAE no tiene el concepto de alterar una tabla, por lo que es limitado.


Aplicaciones

Puede encontrar muchas aplicaciones libres y gratuitas listas para usar con el código fuente completo, listas para personalizar, con varias licencias.

La mayoría en la lista de accesorios de su página principal:

Plugins

Los "enchufables" de web2py (plugins) son funcionalidades autónomas que pueden ser agregadas a una aplicación existente. Usualmente definen componentes, por ej. objetos que pueden ser embebidos en una página y comunicarse con el servidor vía Ajax. Frecuentemente incluyen el correspondiente plugin jQuery y su funcionalidad del lado del servidor para hacerlos funcionar. En el Sitio Oficial puede encontrar varios ejemplos. La interfaz administrativa de web2py provee una interfaz web para subir y administrar los plugins. Una vez que el plugin es parte de su aplicación, puede adaptarlo sin afectar otras aplicaciones. Su apariencia puede ser adaptado por CSS.

Web2py en la web

Estos son algunos de los sitios que utilizan web2py (para ver una lista más completa):

Enlaces externos

Vease también

Fuentes