web2py | |
---|---|
Tipo de | framework para desarrollar aplicaciones web |
Autor | Massimo de Pierro |
Desarrollador | desarrolladores web2py |
Escrito en | Pitón |
Primera edición | 27 de septiembre de 2007 |
plataforma de hardware | multiplataforma |
ultima versión |
|
Estado | Activo |
Licencia | Licencia pública general reducida de GNU versión 3 (LGPLv3) |
Sitio web |
lista de correo web2py.com |
web2py es un marco de desarrollo de aplicaciones web de código abierto escrito en el lenguaje de programación Python . Web2py permite a los desarrolladores web crear sitios web dinámicos utilizando Python. Web2py tiene como objetivo reducir las tareas de desarrollo web, como escribir formularios web desde cero, aunque un desarrollador puede diseñar un formulario desde cero si surge la necesidad. [3]
Web2py se diseñó originalmente como una herramienta de aprendizaje centrada en la usabilidad y la facilidad de implementación, ya que carece de archivos de configuración del proyecto. La arquitectura web2py fue influenciada por los frameworks Ruby on Rails (RoR) y Django . Al igual que estos marcos, web2py tiene como objetivo el desarrollo rápido , afirma la convención sobre la configuración y sigue el patrón de diseño Modelo-Vista-Controlador (MVC) .
Web2py es un marco con todas las funciones y viene con componentes integrados para todas las funciones principales, que incluyen:
Web2py fomenta las mejores prácticas de ingeniería de software , a saber:
Web2py utiliza WSGI , un protocolo basado en Python para la comunicación entre un servidor web y aplicaciones web. También se encuentran disponibles controladores para los protocolos CGI y FastCGI , y se incluye un servidor WSGI habilitado para SSL con múltiples subprocesos , Rocket [7] .
Todo el proceso de desarrollo , depuración , pruebas , soporte y administración de una base de datos remota se puede realizar (si se desea) sin herramientas de terceros, a través de la interfaz web, que a su vez es una aplicación web2py. La internacionalización (añadir idiomas y traducir) también se puede hacer desde este IDE . Cada aplicación viene con una interfaz de administración de base de datos generada automáticamente, similar a Django . El IDE web también incluye herramientas de prueba y una consola web .
Las aplicaciones se pueden crear tanto desde la línea de comandos como escribir utilizando IDE de terceros. [8] Opciones de depuración adicionales disponibles: [9]
El clásico programa Hello World web2py en su forma más simple (se mostrará una página web desnuda [15] sin plantilla) se ve así:
def hola (): devuelve 'Hola Mundo'Web2py incluye un lenguaje de plantillas basado en Python puro que no requiere el uso de sangría y un modelo de objeto de documento ( DOM ) del lado del servidor.
El motor de plantillas también se puede usar por separado de web2py. [16] Las plantillas de Joomla 1.x se pueden convertir en plantillas web2py. [17]
Web2py también incluye dos bibliotecas de marcado: el filtro markdown2 . Archivado el 19 de marzo de 2014 en Wayback Machine de texto a HTML, que convierte el marcado de Markdown a HTML sobre la marcha ; y markmin . Archivado el 19 de marzo de 2014 en Wayback Machine . Similar al anterior pero compatible con ambas tablas, video/audio html5 y protocolo oembed.
El controlador , en ausencia de una vista correspondiente, utiliza automáticamente una vista universal que muestra las variables devueltas por el controlador, lo que permite el desarrollo de la lógica comercial de la aplicación antes de escribir el diseño HTML. Un ejemplo de "Hello World" usando la plantilla predeterminada:
def hola (): return dict ( saludo = 'Hola mundo' )El valor dict() devuelto por la acción (función) se genera automáticamente como HTML si la página se solicita con la extensión .html, como JSON si la página se solicita con la extensión .json, como XML si la página se solicita con la extensión .json. extensión .xml. Otros protocolos como jsonp, rss, ics, google maps, etc. son compatibles y se pueden ampliar.
A continuación se muestra un ejemplo más complejo de código que define una tabla y brinda a los usuarios registrados la posibilidad de editar sus campos:
base de datos define_table ( 'cosa' , Field ( 'nombre' , notnull = True )) @auth . require_login () def hola (): return dict ( grid = SQLFORM . grid ( db . cosa ))Cada aplicación web2py viene con un rastreador de errores :
Cron es un mecanismo para crear y ejecutar tareas repetitivas en segundo plano. Busca el archivo crontab de la aplicación en el formato crontab estándar. Hay tres modos de funcionamiento disponibles:
A partir de la versión 2.3, el uso de cron está en desuso porque web2py viene con un programador. Las tareas se pueden definir en modelos y programar creando una entrada en la base de datos. Los usuarios pueden iniciar procesos que realizan tareas en segundo plano. El programador es mejor que cron porque le permite configurar más parámetros (hora de inicio, hora de finalización, número de repeticiones, número de intentos de error) y funciona mejor con un uso constante de recursos.
Web2py puede compilar aplicaciones web para su distribución en bytecode sin código fuente. A diferencia de los marcos que usan lenguajes de plantillas especializados, Web2py también puede compilar código a código de bytes, ya que es código Python puro.
Web2py es único en el mundo de los marcos web de Python porque los modelos y los controladores se ejecutan, no se importan. No son módulos. Se ejecutan en un único entorno global que se inicializa en cada solicitud http. Esta decisión de diseño tiene pros y contras.
La principal ventaja es la facilidad de desarrollo, específicamente para la creación rápida de prototipos. Otra ventaja es que todos los objetos definidos dentro de este entorno se restablecen limpiamente en cada solicitud http y nunca se comparten entre solicitudes. Esto significa que el desarrollador no necesita preocuparse por cambiar el estado de un objeto (por ejemplo, el atributo legible de un campo de base de datos) o preocuparse por la filtración de un cambio a otras solicitudes simultáneas u otras aplicaciones. Una tercera ventaja es que web2py permite la coexistencia de múltiples aplicaciones bajo la misma instancia sin conflictos, incluso si usan diferentes versiones de los mismos módulos o diferentes módulos con el mismo nombre.
La principal desventaja del entorno global es que los archivos de modelo y los archivos de controlador no son módulos y el orden de ejecución es importante (aunque se puede especificar usando modelos condicionales). Es más probable que ocurra un conflicto de nombres que en los módulos normales de Python. Es posible que algunas herramientas de desarrollo estándar de Python no entiendan los objetos definidos en modelos y controladores. Además, los desarrolladores deben ser conscientes de que el código de los modelos se ejecuta en cada solicitud y esto puede causar una penalización en el rendimiento. Nada en web2py impide que los desarrolladores usen e importen módulos normales de Python (enfoque sin modelo) y, para este propósito, web2py proporciona un objeto local de hilo (actual) para facilitar el acceso a los objetos asociados a la solicitud actual. Sin embargo, en este caso, el desarrollador debe ser consciente de las mismas trampas en las que incurren otros marcos: cambiar el estado de un objeto definido en un módulo puede afectar otras solicitudes concurrentes.
Otra desventaja es que, debido a que los modelos y los controladores no están basados en clases, la reutilización eficiente del código se vuelve más difícil, particularmente porque la incapacidad de heredar de un controlador principal (por ejemplo, ApplicationController en Ruby on Rails) significa que la funcionalidad del controlador común debe referenciarse repetidamente. en todos los archivos del controlador.
web2py se ejecuta en Windows , teléfonos con Windows CE , Mac , Unix / Linux , Google App Engine , Amazon EC2 , casi cualquier servidor web con Python 2.4 [18] /2.5/2.6/2.7.
Las versiones de lanzamiento de web2py incluyen Python 2.5, pero la versión de origen se puede ejecutar en 2.4 a 2.7.
web2py desde v1.64.0 se ejecuta sin modificaciones en Java con Jython 2.5, sin ninguna limitación conocida. [19]
El código web2py puede ejecutarse con IronPython en .NET . [20] Limitaciones:
El binario web2py [21] se ejecutará desde una unidad USB o un disco duro portátil sin dependencias, como Portable Python . Archivado el 12 de noviembre de 2020 en Wayback Machine .
Web2py responde a las solicitudes realizadas a través de HTTP y HTTPS utilizando el servidor Rocket incorporado, [22] así como Apache , [23] Lighttpd , [24] Cherokee , [25] Hiawatha , Nginx y prácticamente cualquier otro servidor web que admite CGI , FastCGI , WSGI , mod proxy , [26] [27] [28] y/o mod python .
Si bien varios desarrolladores de web2py usan editores de texto como Vim , Emacs o TextMate , Web2py también tiene un IDE integrado basado en la web. Otros prefieren herramientas más especializadas que proporcionen depuración, refactorización, etc.
La capa de abstracción de la base de datos ( DAL ) de web2py genera consultas SQL de forma transparente y dinámica y las ejecuta en una variedad de DBMS compatibles sin necesidad de comandos SQL específicos de la base de datos (al mismo tiempo, los comandos SQL también se pueden ejecutar directamente).
SQLite está incluido en Python y es la base de datos predeterminada de web2py. Un cambio en la cadena de conexión permite la conexión a Firebird , IBM DB2 , Informix , Ingres , Microsoft SQL Server , MySQL , Oracle , PostgreSQL y Google App Engine (GAE) con algunas advertencias. Especialidades:
DAL promete alta velocidad, al menos en comparación con SQLAlchemy y Storm . [32]
Web2py implementa un DAL, no un ORM . Un ORM mapea las tablas de la base de datos en clases que representan abstracciones lógicas de la capa de la base de datos (p. ej., una clase de usuario o una clase de orden de compra) y mapea registros en instancias de esas clases. En cambio, DAL asigna tablas y registros de la base de datos a instancias de clases que representan conjuntos y registros en lugar de abstracciones de nivel superior. Tiene una sintaxis muy similar a un ORM pero es más rápido y puede mapear casi cualquier expresión SQL en expresiones DAL. El DAL se puede utilizar independientemente del resto de web2py. [33]
Los siguientes son algunos ejemplos de sintaxis DAL:
db = DAL ( 'postgresql://usuario:contraseña@localhost/db' , pool_size = 10 ) db . define_table ( 'persona' , Field ( 'nombre' ), Field ( 'imagen' , 'cargar' )) db . persona _ insertar ( nombre = 'Martín' , imagen = abrir ( 'nombre de archivo.png' )) filas = db (( db . persona . nombre == 'Martin' ) | db . persona . nombre . contiene ( 'T' )) . seleccionar ( ordenar por = db . persona . nombre . inferior ())La última versión de DAL tiene soporte para funciones GIS 2D con Spatialite y PostGIS. Las API actuales son experimentales debido a un posible cambio a API 3D.
web2py también admite migraciones automáticas de bases de datos : si cambia la definición de una tabla, web2py la ALTERARÁ en consecuencia. Las migraciones son automáticas, pero se pueden deshabilitar para cualquier tabla y, por lo general, la migración se deshabilita cuando una aplicación está lista para su distribución en vivo. Se registran las migraciones y los intentos de migración, documentando los cambios.
Restricciones:
El código de Web2py se publica bajo la Licencia pública general reducida de GNU (LGPL) versión 3 a partir de la versión 1.91.1 de web2py. [34]
El código Web2py anterior a la versión 1.91.1 se publicó bajo GNU GPL v2.0 con excepción comercial.
Varios paquetes de terceros distribuidos con web2py tienen sus propias licencias, generalmente licencias de tipo Public-domain , MIT o BSD . Las aplicaciones creadas con web2py no están cubiertas por la licencia LGPL.
Web2py tiene derechos de autor de Massimo DiPierro. La marca registrada "web2py framework" es propiedad de Massimo DiPierro .
En 2011, InfoWorld clasificó a web2py en la parte superior de seis marcos web de Python . En 2012, web2py ganó el premio Tecnología del Año . Archivado el 18 de abril de 2014 en Wayback Machine , por tener Web2py con todo lo que necesita para crear aplicaciones web, incluso un intérprete de Python. La misión de su creador de construir un marco fácil de usar se extiende por todas partes. La capa de abstracción de base de datos de Web2py le permite manipular una variedad de bases de datos sin tener que escribir SQL. Una vez que haya definido las tablas de su base de datos, Web2py creará automáticamente una interfaz de administración para su aplicación. De hecho, la combinación de consola y tablero de Web2py es donde se llevan a cabo todas las actividades de desarrollo de su aplicación, incluso la edición de los archivos de su aplicación. Finalmente, Web2py le permite incrustar código Python en el HTML de su página web, para que no tenga que aprender un nuevo lenguaje de plantillas. Con toda su asistencia integrada, Web2py es tan sencillo como parece .
La documentación para web2py se recopila en The Definitive Reference Guide Archivado el 12 de junio de 2018 en Wayback Machine , por Massimo DiPierro . El manual también está disponible en forma impresa o como PDF de solo lectura.
La documentación en línea , archivada el 19 de marzo de 2014 en Wayback Machine , tiene un enlace desde la página de inicio de web2py, con libros de cocina , videos, ejemplos interactivos, referencia de API interactiva, epydoc s (referencia de biblioteca completa), preguntas frecuentes , hoja de trucos , herramientas en línea, etc.
El soporte de la comunidad está disponible a través de la base de conocimientos de web2py . Archivado el 19 de marzo de 2014 en Wayback Machine , la lista de correo web2py. Archivado el 25 de junio de 2012 en Wayback Machine en Google Groups y el canal #web2py en freenode . [35] A partir del 2009-10-02, quince empresas de todo el mundo proporcionan soporte comercial de web2py. [36]
El desarrollador principal de web2py es el Profesor Massimo DiPierro , Profesor Asociado de Ciencias de la Computación en la Universidad DePaul en Chicago . A partir de 2011, la página de inicio de web2py enumera más de 70 "colaboradores principales". [37]
El código fuente de web2py está disponible en dos repositorios:
El código fuente de la primera versión pública de web2py fue publicado bajo la licencia GNU GPL v2.0 el 27 de septiembre de 2007 por Massimo DiPierro bajo el nombre Enterprise Web Framework (EWF). Debido a un conflicto de nombres, el nombre tuvo que cambiarse dos veces: EWF v1.7 fue reemplazado por Gluon v1.0, y Gluon v1.15 fue seguido por web2py v1.16. La licencia se cambió a LGPLv3 con el lanzamiento de web2py versión 1.91.1 el 2010-12-21.
Puede encontrar una lista más larga con capturas de pantalla aquí Archivado el 14 de marzo de 2014 en Wayback Machine y aquí Archivado el 19 de marzo de 2014 en Wayback Machine . Puede encontrar una lista de complementos aquí
Pitón | |
---|---|
Comunidad | |
Implementaciones | |
Otro |
|