Web2py
Web2py est un framework Web libre écrit et programmable en langage Python initialement conçu comme un outil éducatif facile à prendre en main et sans fichiers de configuration. Il s'inspire des frameworks Web tels que Ruby on Rails (RoR) ou Django en permettant de se concentrer sur le développement rapide d'applications, mettant en œuvre le principe de convention plutôt que configuration et suivant le patron d'architecture Modèle-Vue-Contrôleur (MVC).
Présentation
[modifier | modifier le code]Web2py est un framework "full-stack", c'est-à-dire qu'il permet d'assurer plusieurs fonctions :
- Requêtes et réponses HTTP, cookies, sessions
- Gestion des protocoles[2] HTML/XML, REST, ATOM et RSS, RTF et CSV, JSON, JSON-RPC et XML-RPC, AMF-RPC (Flash/Flex), et SOAP[3];
- API CRUD
- Plusieurs mécanismes d'authentification et de contrôle d'accès à base de rôles
- Database abstraction layer (DAL) capable de générer des requêtes SQL et d'assurer la connectivité avec plusieurs bases de données
- Système de cache basé sur la mémoire vive, le disque dur et memcached pour l'extensibilité
- Support de l'internationalisation
- Utilisation de jQuery pour Ajax et les animations de l'interface graphique
- Logging automatisé des erreurs
Web2py encourage les pratiques d'ingénierie du logiciel:
- Utilisation du patron de conception Modèle-Vue-Contrôleur (MVC)
- Auto soumission[4] des formulaires web
- Sessions côté serveur
- Gestion sûre des téléchargements de fichiers
Web2py est déployable avec les protocoles WSGI, CGI et FastCGI. Il permet également d'utiliser le multithreading et SSL.
Caractéristiques spécifiques
[modifier | modifier le code]Environnement de développement intégré web (IDE)
[modifier | modifier le code]Le développement, le debug, les tests, la maintenance et l'administration de la base de données peuvent être réalisés par l'interface web. L'internationalisation, comprenant l'ajout, la suppression et la modification des fichiers de langues, est également accessible depuis cet environnement. De plus, chaque application dispose d'un shell intégré pour aider au développement.
En plus de cette interface, la gestion de l'application est possible par une interface en ligne de commande ou d'autres environnements de développement intégré.
Web2py inclut un système de template en pur Python mais sans indentation. Un convertisseur markdown2 permet de convertir le code généré du langage Markdown en HTML à la volée.
Système de ticket
[modifier | modifier le code]Chaque application web2py dispose d'un système de ticket. Lorsqu'un bug survient, un ticket est généré pour traquer les erreurs sans qu'elles ne soient affichées à l'utilisateur. Le code source et les erreurs sont ainsi protégés et seul l'administrateur peut les consulter.
Cron portable
[modifier | modifier le code]Cron est un mécanisme qui permet d'exécuter des tâches récurrentes en arrière-plan. Web2py utilise ce système en consultant un fichier crontab standard et en se basant sur plusieurs modes d'exécution.
Distribution du code
[modifier | modifier le code]Les applications Web2py peuvent être compilées en bytecode et être ainsi distribuées sans fournir le code source.
Environnements supportés
[modifier | modifier le code]Systèmes d'exploitation, versions de Python et matériels
[modifier | modifier le code]Web2py fonctionne sur Windows, les téléphones Windows CE, Unix/Linux, Google App Engine, Amazon EC2 et la majorité des hébergeur web. Il est compatible avec CPython 2.4, 2.5 et 2.6.
Depuis la version 1.64.0, Web2py fonctionne sans modification sur la plate-forme Java avec Jython 2.6 sans limitations connues[5].
Web2py est aussi disponible en utilisant IronPython pour la plateforme .NET[6] sous certaines conditions :
- Pas de module CSV
- Aucune base de données
- Pas de serveur web intégré
L'utilisation depuis VMWare est prévue[7] prochainement.
L'exécutable Web2py[8] fonctionne depuis une clé USB ou un disque dur portable sans aucune dépendances mise à part Python.
Serveurs web
[modifier | modifier le code]Web2py peut servir les requêtes HTTP et HTTPS avec son serveur web intégré[9], Apache[10], lighttpd[11], Cherokee[12], nginx, Hiawatha, et d'autres serveurs depuis CGI, FastCGI, WSGI, mod proxy[13],[14],[15] ou mod python.
Base de données
[modifier | modifier le code]La couche d'abstraction de base de données (DAL) de Web2py genère dynamiquement et de manière transparente des requêtes SQL compatibles avec plusieurs bases de données :
SQLite est inclus au langage Python et sert de base de données par défaut pour Web2py. Une phrase de connexion permet d'accéder à des bases Firebird, IBM DB2, Informix, Ingres, Microsoft SQL Server, MySQL, Oracle, PostgreSQL et Google App Engine (GAE) en permettant:
- Les connexion multiples
- La création et l'altération automatique des tables
- Les transactions automatiques de base de données
- La distribution des requêtes pour les bases le supportant
- GAE n'est une base de données relationnelle mais Web2py permet d'émuler certaines opérations
La couche DAL est rapide, au moins comparable à SQLAlchemy et Storm[16].
Web2py implémente une couche DAL et non une couche Object-relational mapping(ORM). Un ORM transforme les tables d'une base de données en classes, les enregistrements en instances de ces classes. Une couche DAL permet d'associer les tables de la base en instances de ces classes et les enregistrements en instance d'autres classes. Cela permet d'avoir une syntaxe proche des ORM mais en étant plus rapide tout en permettant d'associer n'importe quel requête SQL. Cette couche peut fonctionner sans Web2py[17].
Migration de base de données automatique
[modifier | modifier le code]Web2py supporte les migrations de base de données. Si une table ou une colonne est différente du modèle correspondant, la définition de la table est changée automatiquement. Cette option peut être désactivée pour n'importe quel table, et les actions sont enregistrées pour suivre les modifications.
Limitations :
- SQLite ne supporte pas bien les migrations. Il n'est pas possible d'altérer le type d'une colonne, mais on peut stocker les valeurs avec le nouveau type.
- Le concept d'altération de table n'existe pas pour GAE, les migrations sont donc limitées.
Applications propulsées par Web2py
[modifier | modifier le code]- Powered by web2py
- Websites Powered by web2py
- Who Uses Web2Py
- Ready-to-use web2py appliances
- PyForum.
- T2, un plugin pour Web2py qui implémente des patrons de développement : enregistrement, connexion, déconnexion, groupes, accès, attachements, commentaires, aperçus, ... (avec une documentation complète).
- T3, une application de wiki qui tourne sous n'importe quel environnement, dont Google App Engine.
Licenses
[modifier | modifier le code]Le code de Web2py utilise la licence publique générale GNU version 3 avec une exception commerciale[18]. De nombreux paquet tiers distribués avec Web2py utilisent généralement des licences MIT ou BSD. Les applications conçues avec web2py sont couvertes par la licence GPL.
Massimo Di Pierro possède les droits d'auteurs et la marque Web2py.
Publications
[modifier | modifier le code]Livres
[modifier | modifier le code]La documentation de référence de Web2py est le livre The Official web2py Book, de Massimo Di Pierro. Le manuel est aussi disponible en version imprimée ou en PDF.
- 1re Édition : out of print. Wiley; ; 256 pages; (ISBN 978-0-470-43232-7).
- 2e Édition : web2py Manual. Wiley; ; 341 pages; (ISBN 978-0-470-59235-9). Vous pouvez le lire en ligne. Errata pour le livre.
Documentation en ligne
[modifier | modifier le code]La documentation en ligne est lié à la page d'accueil de Web2py, avec un cookbook, des vidéos, des exemples interactifs, une API de référence interactive avec epydoc, une FAQ etc.
- Astuces de web2py.
- Web2py wiki (réalisé avec Web2py)
- diapositives sur Web2py.
Vidéos
[modifier | modifier le code]- web2py Enterprise Web Framework Tutorial.
- web2py "Shootout" video tutorial.
- web2py on the Google appengine.
- More video tutorials on Vimeo.
Imprimé
[modifier | modifier le code]- Web programming with web2py; Python Magazine; Marco Tabini & Associates, Inc.;
Communauté
[modifier | modifier le code]Support
[modifier | modifier le code]Un support communautaire est disponible sur la base de connaissances de Web2py, la liste de diffusion officielle Web2py de Google Groups, la liste de diffusion francophone Web2py de Google Groups et un canal #web2py sur freenode[19]. Depuis le , un support commercial est fourni par une quinzaine d'entreprise internationale[20].
Développeurs
[modifier | modifier le code]Le responsable du développement se nomme Massimo Di Pierro (Professeur associé d'informatique de l'Université DePaul à Chicago). Le , le site officiel de Web2py regroupe 52 contributeurs principaux[21].
Développement du code source
[modifier | modifier le code]Le code source de Web2py est disponible depuis deux dépôts :
- Bazaar sur le site Launchpad: BZR snapshot
- Mercurial sur Google Code: hg snapshot
Histoire et nom
[modifier | modifier le code]La première version du code source de Web2py était sortie sous licence GNU GPL v2.0 le par Massimo Di Pierro comme Enterprise Web Framework (EWF). Le nom a été changé deux fois à cause de conflit de nommage, ainsi EWF v1.7 a été suivi de Gluon v1.0, puis de Gluon 1.5, et enfin de Web2py v1.16.
Notes et références
[modifier | modifier le code]- « web2py Web Framework »
- Web2py speaks multiple protocols since v1.63
- Using SOAP with web2py
- Writing Smart Web-based Forms
- Web2py runs fully on Java and J2EE using Jython
- Web2py runs with IronPython on .NET, with limitations
- Web2py VMWare appliance coming soon
- MySQL with web2py Windows binary on a USB thumb-drive
- How to run the built-in SSL server
- Web2py with Apache and mod_ssl
- Web2py with Lighttpd and FastCGI
- Web2py with Cherokee
- Apache Module mod_proxy
- Web2py with mod_proxy
- Web2py with mod_proxy and mod_proxy_html
- ORM Benchmark
- How to use web2py DAL without web2py
- web2py License Agreement
- IRC #web2py channel
- Commercial support for web2py
- List of main contributors to web2py