Web2py

De Wikipedia, la enciclopedia libre
web2py
Información general
Tipo de programa Framework Web
Desarrollador web2py developers
Licencia GNU Lesser GPL v3.0
Información técnica
Programado en Python
Versiones
Última versión estable 2.15.4-stable ( 2 de septiembre de 2017)
Enlaces

Web2py es un framework de desarrollo web que es software libre y 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.

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.

Visión general y características[editar]

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

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

Originalmente diseñado como una herramienta de enseñanza 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 distintivas[editar]

Entorno de desarrollo integrado (IDE) basado en web[editar]

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.[4]

Vistas Flexibles[editar]

El programa Hola Mundo con web2py en su forma más simple (página web simple[5]​ 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.[6]​ Las plantillas Joomla 1.x pueden ser convertidas a web2py.[7]

Un 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[editar]

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

Sistema de Tickets[editar]

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 usuario. 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[editar]

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. (para Apache CGI/WSGI)
  • Hard cron: un hilo cron se inicia al comenzar web2py. (para Windows y CherryPy).
  • System cron: las funciones cron son llamadas desde el sistema operativo (Unix/Linux)

Protección del código fuente[editar]

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)[9]

Capa de abstracción de base de datos (DAL)[editar]

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,[10]​ y puede manejar casi cualquier expresión SQL. La DAL puede ser usada sin web2py.[11]

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,[12][13]​ 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[editar]

Web2py soporta migración automática al cambiar la definición de una tabla, web2py la ALTERa (puede ser deshabilitado). Las migraciones, sus intentos y los cambios son registrados (logged) 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[editar]

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:

Tres de ellas en otra parte:

  • PyForum, un completo sistema de foro.
  • T2, un plugin que implementa patrones de desarrollo web — registro, login, logout, grupos, accesos, adjuntos, comentarios, vistas previas, etc. —, con documentación extensiva.
  • T3, una aplicación wiki que funciona en cualquier parte, incluyendo Google App Engine. Con Superpoderes: permite al administrador definir tablas en las bases de datos y embeber código Python.

ERP.

  • DataWork. Un ERP de uso gratuito (funcionalidades limitadas) y de pago bajo demanda (todas las funcionalidades disponibles previo pago).

Una referencia rápida de la funcionalidad de alto nivel que fue agregada a web2py en T2 y T3: hoja de trucos T2/T3.

A su vez, existen aplicaciones de referencia realizadas con web2py (ver enlaces para mayor información):

  • web2conf: Sistema para administración de conferencias (registro, propuestas de charlas, revisiones, feedback, etc.)
  • web2py-wiki: una Wiki simple
  • web2pyhl7: una aplicación médica (salud) implementando el estándar internacional HL7

Plugins[editar]

Los "enchufables" de web2py (plugins) son funcionalidades autónomas que pueden ser agregadas a una aplicación existente. Usualmente definen componentes, por ejemplo 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[editar]

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

Enlaces externos[editar]

Referencias[editar]