Django 1.9 disponible avec de nouvelles fonctionnalités
parmi lesquelles la validation des mots de passe et le support des tests en parallèle
La nouvelle version du framework Web Diango, basé sur le langage Python est maintenant disponible. Dans cette nouvelle version, l’équipe de développement du framework met en avant plusieurs nouvelles fonctionnalités. Diango 1.9 requiert les versions 2.7, 3.4 ou 3.5 de Python pour fonctionner, cependant l’équipe de développement du framework recommande exclusivement aux développeurs et déclare ne supporter que les dernières versions de chaque série du langage. Pour rappel, le support des versions 3.2 et 3.3 a été supprimé depuis la version 1.8 de Django.
Parmi les nouvelles fonctionnalités, celles plus mises en avant par l’équipe de Django et présentées comme majeures sont au nombre de cinq.
Exécution d’actions après un commit d’une transaction
La nouvelle fonction on_commit() permet d’effectuer des actions après avoir déclenché une transaction de base de données. Cela peut être particulièrement intéressant pour l’envoi de messages de notification, la création de tâches en attente ou pour invalider les caches par exemple. Cette fonctionnalité est disponible dans le package django-transaction-hooks.
Validation de mots de passe
Django offre maintenant la fonctionnalité de validation des mots de passe pour prévenir contre l’utilisation de mots de passe faibles d’un point de vue sécuritaire par les utilisateurs. La validation est intégrée au changement de mot de passe, au rechargement de formulaires et peut-être facilement intégrée dans n’importe quelle partie du code. La validation se fait en configurant un ou plusieurs valideurs à travers le paramètre AUTH_PASSWORD_VALIDATORS. Quatre valideurs sont utilisés par le framework dans sa version 1.9 à savoir celui qui exige à l’utilisateur une certaine longueur pour les mots de passe, celui qui compare le mot de passe aux attributs de l’utilisateur comme son nom et qui génère une erreur en cas d’égalité, celui qui permet de s’assurer qu’un mot de passe utilisateur ne soit pas composé uniquement de chiffres et celui qui vérifie que le mot n’est pas un mot de passe trop évident ou trop commun. Il est possible de combiner plusieurs valideurs pour obtenir des niveaux de sécurité des mots de passe avancés. Certains de ces valideurs donnent la possibilité au programmeur de personnaliser les configurations pour répondre à des besoins spécifiques. Par exemple, le développeur peut spécifier une liste des mots passe qu’il qualifie de communs pour interdire leur usage. Chaque valideur procure une aide sous forme de texte explicatif expliquant à l’utilisateur ce qu’il est obligatoire de renseigner. Par défaut, aucune validation sur les mots de passe n’est effectuée par le framework à la création d’un nouveau projet. Pour les mettre en œuvre, il faut ajouter une ligne contenant AUTH_PASSWORD_VALIDATORS comme dans le bout de code qui suit.
Le support des Mixins pour les vues basées sur les classes
La nouvelle version du Framework Django apporte le support des Mixins AccessMixin, LoginRequiredMixin, PermissionRequiredMixin et UserPassesTestMixin permettant d’offrir les fonctionnalités de django.contrib.auth.decorators aux vues basées sur les classes. Les Mixins ont été inspirés du projet django-braces mais il existe cependant quelques différences d’implémentation entre Django et le projet django-braces. Dans Django :
- l’attribut raise_exception ne peut prendre que les valeurs true ou false et les exceptions personnalisées ne sont pas supportées ;
- la méthode handle_no_permission() ne requiert pas d’argument. La requête courante est obtenue en faisant self.request ;
- la fonction test_func() de UserPassesTestMixin ne prend pas l’argument user. L’utilisateur courant est obtenu en faisant self.request.user ;
- l’attribut permission_required peut être une chaine de caractères ou une liste de chaines de caractères qui doivent être renseignées pour autoriser l’accès ;
- le nouvel attribut permission_denied_message permet d’associer un message à l’exception PermissionDenied.
Nouveau style pour contrib.admin
L’administrateur à la possibilité de définir un design moderne avec de nouvelles icônes SVG qui donne un rendu convivial sur les écrans HiDPI. Le nouveau style garantit une expérience utilisateur entièrement fonctionnelle avec les navigateurs YUI A-grade. Les anciens navigateurs peuvent présenter des dégradations progressives du rendu.
Exécution de tests en parallèle
La commande test supporte maintenant l’option --parallel permettant d’exécuter les tests d’un projet dans plusieurs processus en parallèle. Chaque processus possède sa propre base de données. Le programmeur doit cependant s’assurer que des cas de test différents n’ont pas accès aux mêmes ressources. Par exemple, un cas de test touchant au système de fichiers doit créer ses propres répertoires temporaires. Cette option est activée par défaut par la suite de test offerte par Django pour :
- les systèmes d’exploitation le supportant (tous sauf Windows) ;
- les bases de données le supportant (toutes sauf Oracle).
En plus de ces fonctionnalités majeures, le framework apporte aussi d’autres fonctionnalités présentées comme mineures dont des améliorations pour django.contrib.admin, django.contrib.admindocs, django.contrib.auth, django.contrib.contenttypes, django.contrib.gis, django.contrib.postgres, django.contrib.sessions, django.contrib.sites et django.contrib.syndication.
Source : DjangoProject
Et vous ?
Que pensez-vous de cette nouvelle version de Django ?
Voir aussi
le forum Django
la rubrique Web Python (Cours, Tutoriels, FAQ, etc.)
Partager