Introduction au framework Django

Qu’est-ce que Django?

Django est un framework de développement web écrit en Python, il permet donc de créer des sites web à l’aide du langage Python. Django a pour but de rendre le développement web simple et rapide. Pour cette raison, le projet a pour slogan « The Web framework for perfectionists with deadlines » ce qui veut dire en Français « Le framework web pour les perfectionnistes avec des objectifs/contraintes (délais, budgets…) ».

Django est écrit en Python, il bénéficie donc de toute la souplesse et de la puissance de Python. Django bénéficie également de toute la richesse des librairies Python.

Comme il est toujours compliqué de partir de rien, Django peut être considéré comme une boîte à outils qui aide et oriente le développeur dans la construction de ses projets, il existe probablement un module répondant à votre besoin et où chaque module peut fonctionner de façon indépendante.

Logo officiel Django

Logo officiel Django

Historique

Pour la petite histoire Django a vu le jour en 2003 et a été publié sous licence BSD en juillet 2005.

Le framework a été nommé ainsi en souvenir de Django Reinhardt, musicien de jazz. Django a été originellement développé pour un journal local de la ville de Lawrence, dans le Kansas à partir de 2003, par Adrian Holovaty et Simon Willison. L’idée d’origine du framework était de permettre de développer des sites web complexes utilisant une base de données. En 2005, l’agence de presse décide de publier Django en « open source » (logiciel libre) sous 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 qui maintient encore aujourd’hui la communauté et le développement du framework.

Au moment de l’écriture de cette Introduction à Django, la version stable est 1.9.

Principes

Django est un framework qui s’inspire du principe MVC (Model/View/Controller) ou MTV (la vue est gérée par un template) et est composé de trois parties distinctes :

  • Un langage de templates flexible qui permet de générer du HTML, XML ou n’importe quel autre format basé sur du texte (SVG, OpenDocument, PostScript, …).
  • Un contrôleur implémenté sous la forme d’un « remapping  » d’URL à partir d’expressions régulières Python.
  • Une API d’accès aux données est automatiquement générée par le framework compatible CRUD. Plus besoin d’écrire des requêtes SQL associées à des formulaires, les requêtes SQL sont générées automatiquement par l’ORM (Object Relational Mapping). Cette puissante fonctionnalité permet à Django de bénéficier d’une interface d’administration générée automatiquement à partir du modèle de données ainsi que d’un mécanisme de validation des données saisies par l’utilisateur.

Sont également inclus :

  • Un mécanisme de cache web pouvant utiliser plusieurs méthodes (MemCached ou cache en mémoire en Français, par fichiers, en base de données ou personnalisé).
  • le support de classes intermédiaires (middleware) qui peuvent être placées à n’importe quelle étape du traitement d’une requête pour intégrer des traitements particuliers comme les caches, le contrôle des accès (authentification, filtrage, sécurité…), ainsi que la traduction et l’internationalisation des formats (dates, nombres, pluriels…).
  • Un serveur de développement web léger est fourni avec Django, permettant de développer, débugger et tester ses applications immédiatement sans aucun déploiement.
  • Un support complet d’Unicode.

Les forces de Django

Les vues génériques : il s’agit de vues et/ou de classes permettant de traiter les cas les plus courants du développement web de manière très simple, tout en écrivant très peu de lignes de code. 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.

La sécurité : mécanisme anticlick-jacking, protection par CSRF token, contrôle total sur les requêtes, authentification, cryptage ; la boîte à outils est assez complète, les mécanismes les plus courants sont intégrés.

La documentation : Django possède une très bonne documentation anglaise. (dont un effort de traduction en français de l’API stabilisé) 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 outils tiers peuvent être ajoutés comme la barre de débogage de Symfony (Django Debug Toolbar).

La communauté Django : Django dispose d’une large communauté très active. Depuis juin 2008, la fondation Django Software s’occupe du développement et de la promotion du framework. La fondation organise deux fois par an les « DjangoCon », qui sont des conférences et ateliers entre développeurs et utilisateurs de Django. Une se déroule en Europe et l’autre aux États-Unis.

Nous n’avons cité que quelques points forts du framework, il en existe plusieurs, mais c’est difficile de les lister tous ici.

Les faiblesses de Django

L’AJAX : Django ne permet pas l’intégration d’AJAX côté client. 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 (en), jQuery, dojo, ext, etc.).

Migrations : Avant la version 1.724, il n’y avait pas d’outil intégré au framework pour gérer les migrations lors des modifications des modèles. Mais des applications Django permettaient de pallier ce manque, notamment South , et d’autre part, un outil de migration intégré au framework est inclus à partir de la version 1.7.

Laisser un commentaire