Django (framework)
| Django | |
Logo |
|
|
|
|
Page par défaut de Django |
|
|
|
|
| Développeur | Lawrence Journal-World |
|---|---|
| Première version | 21 juillet 2005 |
| Dernière version | 1.5.1 (28 mars 2013) [+/-] |
| Écrit en | Python |
| Environnement | Multiplate-forme |
| Type | Framework Web |
| Licence | BSD |
| Site web | www.djangoproject.com |
| modifier |
|
Django est un framework open-source de développement web en Python. Il a pour but de rendre le développement web 2.0 simple et rapide. Pour cette raison, le projet a pour slogan « Le framework web pour les perfectionnistes sous pression ». Développé au départ pour les sites de la compagnie de Lawrence, Django a été publié sous licence BSD à partir de juillet 2005.
Depuis juin 2008, la Django Software Foundation s'occupe du développement et de la promotion du framework. En plus de cette promotion régulière, des conférences entre développeurs et utilisateurs de Django sont organisées 2 fois par an depuis 2008. Nommées DjangoCon, une se déroule en Europe et l'autre aux États-Unis.
Plusieurs sites grand public sont désormais basés sur le framework, dont Pinterest[1], Instagram[2] ou encore Mozilla[3]. Une liste plus complète peut être consultée sur Django sites.
Sommaire |
Principes [modifier]
Django est un framework qui s'inspire du principe MVC ou MTV (la vue est gérée par un template) composé de 3 parties distinctes :
- Un langage de templates flexible qui permet de générer du HTML, XML ou tout autre format texte ;
- Un contrôleur fourni sous la forme d'un "remapping" d'URL à base d'expressions rationnelles ;
- Une API d'accès aux données est automatiquement générée par le framework compatible CRUD. Inutile d'écrire des requêtes SQL associées à des formulaires, les requêtes SQL sont générées automatiquement par l'ORM.
En plus de l'API d'accès aux données, une interface d'administration fonctionnelle est générée depuis le modèle de données. Un système de validation des données entrées par l'utilisateur est également disponible et permet d'afficher des messages d'erreurs automatiques.
Sont également inclus :
- un serveur web léger permettant de développer et tester ses applications en temps réel sans déploiement ;
- un système élaboré de traitement des formulaires muni de widgets permettant d'interagir entre du HTML et une base de données. De nombreuses possibilités de contrôles et de traitements sont fournies ;
- un framework de cache web pouvant utiliser différentes méthodes (MemCached, système de fichier, base de données, personnalisé) ;
- le support de classes intermédiaires (middleware) qui peuvent être placées à des stades variés du traitement des requêtes pour intégrer des traitements particuliers (cache, internationalisation, accès…) ;
- un support complet d'Unicode.
Par framework, Django peut être considéré comme une boîte à outils où chaque module peut fonctionner de façon indépendante.
Un exemple de cette modularité est la plate-forme de développement Google App Engine, où l'ORM de base a été remplacé par une API sur les BigTable de Google. Guido Van Rossum, le créateur du langage Python, a activement participé à cette plate-forme.
Histoire [modifier]
Il a été nommé ainsi en souvenir de Django Reinhardt, musicien de jazz. Son code a été originellement développé pour un journal local de la ville de Lawrence, dans le Kansas à partir de 2003. L'idée d'origine du framework était de permettre de développer des sites web complets, interfacés avec une base de données, dans un laps de temps très court. C'est en 2005, l'agence de presse décide de publier le framework au public, sous la licence BSD. C'est depuis cette ouverture que sa notoriété augmente. Il sera repris plus tard, en juin 2008 par la fondation Django Software[4] qui maintient encore aujourd'hui la communauté et le développement du framework. À la suite de cette reprise, la version 1.0 du framework sort quelques mois plus tard[5]. Depuis cette version, les mises à jour se stabilisent à une version majeure annuelle.
Historique des versions [modifier]
| Code des couleurs | |
|---|---|
| Rouge | Ancienne version, non supportée |
| Vert | Version actuelle, supportée |
| Bleu | Version à venir |
| Version majeure | Version mineure | Date de sortie | Version Python minimum | Notes |
|---|---|---|---|---|
| Open Source | - | 15 juillet 2005 | 2.3 | Mise à disposition public de Django par Lawrence. |
| Version "0" | 0.90 | 16 novembre 2005 | 2.3 | |
| 0.91 | 11 janvier 2006 | 2.3 | ||
| 0.95 | 29 juillet 2006 | 2.3 | Notes de version 0.95 | |
| 0.96 | 23 mars 2007 | 2.3 | Notes de version 0.96 | |
| Version 1 | 1.0 | 3 septembre 2008 | 2.3 | Notes de version 1.0 |
| 1.1 | 29 juillet 2009 | 2.3 | Notes de version 1.1 | |
| 1.2 | 17 mai 2010 | 2.4 | Notes de version 1.2 | |
| 1.3 | 23 mars 2011 | 2.4 | Notes de version 1.3 | |
| 1.4 | 23 mars 2012 | 2.5 | Notes de version 1.4 | |
| 1.5 | 26 février 2013 | 2.6.5[6] | Notes de version 1.5 | |
| 1.6 | - | - | Notes de version 1.6 |
Chacune de ces versions sont, ou ont été, mises à jour durant leur support, via des micro-releases[7]. Par exemple, la version 1.2 a eu 7 mises à jour, corrigeant de nombreux bugs et failles de sécurité. Ces versions n'ajoutent pas de fonctionnalités et garantissent une compatibilité identique à la version mineure associée (sauf cas particuliers).
Deux versions sont maintenues en parallèle, la dernière sortie et la précédente. Ainsi, les mises à jour de sécurité et de la documentation sont assurés pour 2 ans, avec le rythme de mise à jour actuel du framework.
Forces et faiblesses de Django [modifier]
Les forces [modifier]
- Les vues génériques : il s'agit de vues permettant de traiter les cas les plus courants du développement web de manière très simple. Elles permettent par exemple de lister des objets avec une gestion de la pagination, de lister des objets organisés par date avec des URL du type (année)/(mois)/(jour)/élément à afficher. Plus d'informations sont disponibles dans la documentation sur les vues génériques.
- Le système d'authentification : User authentication in Django
- La création de pages statiques : The flatpages app
- La documentation : Django possède une très bonne documentation anglaise. Cette documentation, au format ReStructuredText (ReST), est compatible avec le projet Sphinx.
- Les exceptions : les exceptions et backtraces Python sont bien gérées dans Django et apparaissent dans les pages d'erreur 500, en mode débogage. On peut avoir une bonne idée des variables d'environnement et du code ayant provoqué l'exception. Des efforts sont menés pour inclure d'autres outils comme par exemple la barre de débogage de Symfony (Django Debug Toolbar).
Les faiblesses [modifier]
- L'AJAX : Django en tant que framework ne permet pas, seul, l'intégration d'AJAX côté client web. Ceci est un choix de l'équipe de développement qui préfère laisser à l'utilisateur le choix de la bibliothèque AJAX à combiner avec Django (MooTools, Prototype, Mochikit, jQuery, dojo, ext, etc.)[8].
- Migrations : Il n'y a pas d'outil intégré au framework pour gérer les migrations lors des modifications des modèles. Mais des applications Django permettent de pallier ce manque, notamment South.
Voir aussi [modifier]
Articles connexes [modifier]
Bibliographie [modifier]
- The Definitive Guide to Django - 1re édition en décembre 2007, 2de édition en juillet 2009. Disponible en ligne sur djangobook.com.
Liens externes [modifier]
- (fr) Site de la communauté francophone
- (fr) Et le meilleur framework web Python est… Django !
- (en) Documentation officielle
- (en) Django cheat sheet
- (en) Popularité du paquet python-django
Notes et références [modifier]
- What technologies were used to make Pinterest?
- What Powers Instagram: Hundreds of Instances, Dozens of Technologies
- Use of Python at Mozilla
- Announcing the Django Software Foundation, consulté le 13 août 2012
- Django 1.0 released!, consulté le 13 août 2012
- Django's future, and Python 3
- Micro releases sur la page "Django’s release process"
- (en) Page traitant de AJAX sur le Wiki du projet