Je voulais le temps d'un article évoquer le framework Django qui permet de développer des applications Internet rapidement. C'est la technologie utilisée pour ce site et je dois dire que j'ai pu confirmé combien Django facilite le développement d'une application web et rend cette tâche agréable.
Django tire son nom du guitariste Jazz Django Reinhardt, sans doute le plus grand guitariste du 20ème siècle. Il y aurait tant à dire de ce guitariste génial dont la musique a inspiré le jazz manouche comme personne d'autres. Le framework web Django en tire son nom car ses créateurs aiment cette musique. Voilà déjà un point commun entre nous.
Est-ce que son utilisation garantie de devenir un virtuose du web? Peut-être pas mais c'est en tout cas l'une des solutions les plus abouties pour créer des applications Internet rapidement et en évitant certains chausses-trappes.
Sa 1ère qualité est d'être basé sur le langage Python, langage dynamique, orienté-objet, multi-plateforme et dont l'utilisation facilite la programmation. Mais ce n'est pas tout et je vais essayer de présenter d'autres qualités qui m'ont séduites lors de la réalisation de ce site.
Django s'occupe du SQL pour vous
Django intègre un ORM (Mapping Objet-Relationnel) qui permet de manipuler simplement une base de données comme un simple objet Python. La création d'une table dans la base se fait en définissant une classe modèle:
class Entry(models.Model):
title = models.CharField(_('title'), max_length=255)
author = models.ForeignKey('auth.User', verbose_name=_('author'))
category = models.ForeignKey(Category, verbose_name=_('category'))
...
L'exécution de requête se fait de la même façon en Python sans utiliser de SQL directement: Entry.objects.all() retourne l'ensemble des enregistrements de la table Entry que l'on peut trié ou filtré Entry.objects.all().filter(status=1).order_by("-publication_date")
Il est aussi possible bien entendu de récupérer un enregistrement particulier par la fonction Entry.objects.get(title="Un titre")
En plus de simplifier le développement, l'avantage d'une telle approche est de rendre le compte indépendant de la base de donnée choisie. Django en gère tous les accès et supporte plusieurs bases de données comme MySQL, Postgres ou SQLite. On peut donc utiliser SQLite pour le développement et basculé de manière transparente vers MySQL en production.
Un autre aspect très intéressant de l'utilisation de l'ORM est le site d'administration qui est automatiquement généré par Django sur la base du modèle. Il est ainsi possible d'accéder aux informations en base via un site convivial. C'est un gain de temps important lors du développement et de la maintenance.
Un code bien organisé pour le maintenir plus facilement
L'intérêt de ce framework ne se limite pas aux accès bases de données. En effet, la génération des pages dynamiques est facilitée grâce à une architecture bien construite.
Django est basé sur une architecture MVC (Modèle-Vue-Contrôleur) qui prone la séparation entre les données, leurs présentation et la logique associée. Cette pratique, largement adoptée en programmation informatique, améliore la conception du code et le rend ainsi plus facilement maintenable. C'est souvent un reproche fait à PHP qui mixe la logique et la présentation des pages. Django évite cet écueil et on peut penser qu'une application Django sera plus facile à maintenir et à faire évoluer.
La présentation (la vue) des pages est donc isolé de la logique (le contrôleur). Toutefois, l'intégration entre ces 2 composants est très facile via un système de template évolué.
Les templates sont des pages HTML dans lesquels sont inclus des tags qui seront remplacés par les valeurs calculés par le contrôleur.
Par exemple, pour afficher une liste d'articles, le code du template sera:
<h1>Un exemple</h1>
<ul>
{% for entry in entries %}
<li>{{ entry.title }}</li>
{% endfor %}
</ul>
Le tag {{entry.title}} sera remplacé par le titre de l'article et ce pour tous les éléments de la variable entries.
Le contrôleur est l'élement qui va animer la génération de la page. Lorsque l'utilisateur entre une URL, Django détecte quelle fonction du contrôleur appeler. Celui-ci lit les données correspondantes via l'ORM, exécute éventuellement du code pour leur mise en forme, charge le template, génère le code html de la page en remplaçant les tags par les valeurs et retourne la réponse à l'utilisateur.
On voit donc l'intérêt d'une architecture MVC, la définition de la présentation d'une page ne se fait qu'au niveau du template. On peut donc modifier sans craintes de casser le fonctionnement du logiciel.
Cela rassurera sans aucun doute un designer qui ne voudrait se consacrer qu'à l'affichage des données sans toucher au code métier.
Des outils pour sécuriser le code contre les attaques
La sécurité internet est un aspect assez difficile. Les attaquants ont beaucoup d'imagination et sécuriser un site internet demande une grande attention. Django est pensé pour faciliter tous les aspects du développement web. Il intègre donc les aspects sécurité. Par exemple, l'utilisation de l'ORM permet d'éviter les attaques de type injection SQL qui consistent à entrer du code SQL dans les champs d'un formulaire dans le but de corrompre la base de données. D'autres types d'attaques sont aussi prises en compte mais il est fortement recommandé de rester prudent. Django n'est qu'un outil, un très bon outil il est vrai, mais qui ne remplace pas la vigilance que doit avoir un développeur.
Une architecture modulaire pour faire évoluer un site sans soucis
Django intègre de très nombreux modules permettant de gérer bien des aspects d'une application Internet moderne: gestion des utilisateurs, des commentaires, flux RSS, sitemap, email...
De plus son architecture modulaire permet d'intégrer facilement plusieurs applicatifs sur un même site et de les faire communiquer. C'est par exemple le cas de ce site, où le blog coexiste avec les autres pages en gardant une unité sur l'ensemble. Il est ainsi possible d'intégrer à un site django une des nombreux applications existantes: CMS, forum, SIG, ... La liste est longue et ne cesse de s'aggrandir.
Voilà pour cette présentation rapide, j'espère vous donné envie d'en savoir un peu plus sur ce framework dont on dit qu'il est celui des perfectionnistes sous pression et qu'il fait de la réalisation d'un site internet, une joie.
Je ne résiste pas à l'envie de terminer par un peu de musique avec le génie d'un guitariste d'exception.