Une nouvelle version du célèbre framework web Django, conçu pour
le langage Python, vient d'être publiée ce lundi 17 mai. Plusieurs nouveautés accompagnent cette mise à jour, tant au niveau du
langage de templates que de
la validation ou de
syndication. Aucune révolution n'est annoncée, mais les mises à jour présentées confirment les points forts du framework.
Django se développe, et la communauté grandit
À la fois simple et relativement complet, Django vise à aider le programmeur à développer un site web simplement et rapidement, en simplifiant sa gestion des données et en lui proposant des modules ou fonctionnalités tout prêts, mais extensibles (comme une page d'administration, ou
l'envoi d'e-mails, par exemple pour confirmer une inscription). Afin de proposer une séparation claire entre la présentation des données, et leur gestion propre, Django respecte le
paradigme MVC, ou plutôt
MTV comme aiment à le dire les développeurs du framework. Vous trouverez plus d'explications sur le rôle de Django dans
la très complète news de delroth sur Django 1.0.
Cette nouvelle version arrive un peu moins d'un an après la 1.1, qui elle-même suivait la 1.0 d'environ 10 mois. Le rythme de développement de Django est donc stable, l'équipe prenant le temps de faire mûrir et de tester le framework comme il se doit (la
version alpha de Django 1.2 date ainsi du début de l'année). Toutefois, cette évolution ne suit pas celle du langage Python (utilisé par Django), puisque le framework n'est toujours pas compatible avec
Python 3. Django suit le rythme des nombreuses applications développées en Python qui préfèrent assurer la compatibilité ascendante, c'est à dire avec les vieilles versions de Python. Ainsi, il reste compatible avec Python 2.4, une version datant tout de même de 2004 (la 2.3 n'est cependant plus supportée).
Souvent comparé au framework symfony, Django est donc réellement apprécié par les "perfectionnistes sous pression", pour reprendre la devise du framework. Au fil des ans, une véritable communauté s'est donc créée. Pour les francophones, il existe par exemple le site
Django-Fr.org, ou, le mois dernier, la
conférence Django Cong' à Marseille. Le nombre de sites utilisant Django ne cesse de croître, et un grand nombre sont référencés sur
DjangoSites.org.
Les nouveautés de la version 1.2
Plusieurs fonctionnalités intéressantes ont été rajoutées à Django depuis la version précédente. Le site
Django Advent, construit comme un calendrier de l'avent, répertorie et détaille ces innovations, dont voici tout de même une liste sommaire :
Support de plusieurs bases de données au sein d'un même projet
La moindre des tâches d'un framework comme Django est de simplifier la gestion des bases de données, en remplaçant du mieux que possible les requêtes SQL par
une liaison objet-relationnel (abrégée ORM). Les modèles définis par le programmeur remplacent alors les requêtes et on peut même faire abstraction de la base de données réellement utilisée : le code ne diffère pas selon que c'est MySQL, PostgreSQL ou même Oracle qui tourne dessous.
Avant la version 1.2 cependant, une seule base de données pouvait être utilisée de la sorte pour chaque projet. Cette nouvelle version
corrige le tir, et permet par exemple de mixer MySQL pour un certain modèle, et PostgreSQL pour un autre, sans pour autant modifier le reste de l'application.
Validation des données
Un des grands principes de l'informatique est de ne pas se fier aveuglément aux données entrées par l'utilisateur. Par exemple, il faut systématiquement vérifier qu'une adresse e-mail entrée lors d'une inscription est valide, afin que toute l'application fonctionne correctement. Mais de telles vérifications sont bien souvent fastidieuses, et parfois bâclées par les développeurs.
Django 1.2 propose donc le nécessaire pour valider simplement un modèle, en distinguant trois phases : d'abord, valider une entrée isolée (par exemple, "est-ce que l'adresse e-mail a la bonne forme ?"). Ensuite, valider le modèle entier ("est-ce qu'un utilisateur peut avoir une telle adresse e-mail ?"). Enfin, Django permet également de vérifier simplement l'unicité d'une entrée ("est-ce qu'il existe déjà un membre avec cette adresse e-mail ?"). Au niveau du code, ceci se traduit par les méthodes
clean_fields,
clean et
validate_unique de la classe
Model.
Protection contre les failles CSRF
Les failles de type
CSRF consistent, pour un pirate, à faire exécuter par un autre membre une requête à son insu. Par exemple, si sur un forum il est possible de supprimer un message par une requête GET (transmise sous forme de lien au serveur), il peut suffire qu'une fausse image, ayant pour source le-dit lien, entraîne la suppression du message lorsque le navigateur d'un administrateur tente de récupérer l'image en question.
Django permettait déjà de lutter contre ces failles dans les versions précédentes. Cependant,
une nouvelle façon de se défendre apparaît avec la version 1.2. Elle permet ainsi d'utiliser le tag
csrf_token
dans un formulaire, pour contrôler la validité d'une action de l'utilisateur. En cas d'action invalide, le serveur répond alors par défaut par une erreur de type 403, mais cette réponse peut être adaptée.
Amélioration des templates
Le langage de templates de Django, qui permet d'agir sur la vue affichée chez l'utilisateur, a lui aussi été mis à jour. D'abord, le mot clef
if
supporte désormais de vraies expressions conditionnelles. Auparavant, des mots particuliers étaient utilisés, pour éviter que les programmeurs ne surchargent les vues, cassant le paradigme MVC. Cependant, il est certainement plus agréable d'écrire
Code : Autre1
2
3
| {% if a != b %}
...
{% endif %} |
que l'ancien
Code : Autre1
2
3
| {% ifnotequal a b %}
...
{% endifnotequal %} |
Le système de mise en mémoire cache des templates a également été amélioré, améliorant les performances pour les vues composées de templates répartis dans plusieurs fichiers (auparavant, ceux-ci étaient chargés à nouveau depuis le disque). Il est également plus facile
d'utiliser un autre système de templates que celui de Django, comme
Jinja2.
D'autres mises à jour
Un certain nombre d'autres nouveautés ou d'améliorations sont là : par exemple,
un framework de gestion des messages fait son apparition. Il améliore la gestion des messages privés de Django. Le très réputé
système d'authentification de Django a également été amélioré, offrant une gestion plus fine des droits au sein d'une application. Enfin, citons
les flux de syndication accessibles en tant que vues,
l'envoi d'e-mails depuis Django ou même
le support de la géolocalisation, qui sont désormais tous trois plus riches.
Django, un framework complet
Bien que certains continuent de regretter la non-intégration du puissant framework
SQLAlchemy au sein de Django (ce qui
n'empêche en rien d'utiliser les deux), cette version confirme la maturité de Django : capable d'évoluer en préservant la compatibilité avec de vieilles versions, sans pour autant refuser l'évolution et les nouvelles fonctionnalités, simple d'utilisation mais néanmoins
performant, il continue d'être une option intéressante pour qui souhaite développer rapidement un site web communautaire complet.
Django peut être utilisé conjointement au serveur web Apache à l'aide des modules mod_python ou mod_wsgi. Il supporte également le
FastCGI, ce qui permet de l'utiliser avec un grand nombre de serveurs.
Plusieurs hébergeurs permettent d'héberger des sites réalisés avec Django, dont le
francophone Alwaysdata, qui propose des offres gratuites.
Liens divers :
57 Participations
Connectez-vous !
Connectez-vous !
Revenir à la liste des news