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
Le 2015-12-05 12:37:36, par Victor Vincent, Expert éminent sénior
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 :
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 :
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.)
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 :
- 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.
l’attribut raise_exception ne peut prendre que les valeurs true ou false et les exceptions personnalisées ne sont pas supportées ;
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 bases de données le supportant (toutes sauf Oracle).
les systèmes d’exploitation le supportant (tous sauf Windows) ;
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 ?
Voir aussi
-
Aurelien PlazzottaMembre extrêmement actifC'est assez curieux que les articles purement techniques n'intéressent personne. De plus en plus sur ce site (j'ai commencé à le consulter en 2003 avant de m'inscrire en 2006), seuls les articles à tendance polémique, brassant du vent ou facilement accessibles aux masses, suscitent désormais des réactions.
Pour en revenir au sujet, il n'y a pas besoin de cadriciel pour faire de l'héritage multiple (mixin en anglais américain) !le 07/12/2015 à 10:34 -
jedemaMembre régulierC'est vrai que les articles polémiques déchainent beaucoup plus les foules que ce genre d'article. Pourtant, je suis très content de consulter ce genre d'articles (sur Django) sur developpez.
Pour en revenir au sujet principal, Django est vraiment un framework exceptionnel. Pour rébondir sur ton post, rien qu'hier, j'ai remarqué que Laravel ne gérait pas du tout l'héritage de model, que ce soit en héritage abstrait comme en héritage standard.
C'est tellement frustrant de bosser avec des frameworks limités...le 08/12/2015 à 9:17 -
EPITECH42Nouveau membre du ClubDisons que les sujets plus larges touchent plus de gens et créent donc plus de réactions. Seuls les curieux sans expérience python & web (comme moi) se baladent sur ce genre d'articles sans laisser de traces (d'habitude
) le 08/12/2015 à 15:15 -
wiztricksExpert éminent séniorC'est quelque chose qu'il faut essayer d'expliquer aux développeurs. Ceci dit, si un site Django se fait hacker à cause de mots de passe trop faibles, tous les admins et développeurs de sites Django se feront tancer par des décideurs (ceux qui paient) pour un manque de robustesse de la solution... alors qu'ils n'y sont pour rien. Et avec ces gens là, lorsque le doute s'installe, ce ne sont pas les arguments techniques qui vont "rassurer". Alors si être un peu coercitif peut éviter cela, ce n'est pas une mauvaise chose.
- Wle 09/12/2015 à 15:37 -
wiztricksExpert éminent séniorSi on trouve leur mot de passe ce ne seront leurs données personnelles qui pourront être affectées.
Dans le cas de la base de donnée d'une application Web, ce seront celles de n'importe qui....
On ne parle pas vraiment de la même chose.
Encore faut-il détecter l'intrusion... Si çà prend quelques jours, les backups ne servent à rien: si on repart de J-n, il va falloir expliquer aux utilisateurs que tout le boulot fait ces n derniers jours est à refaire... Ils vont aimer... surtout s'il s'agit de commandes, d'ordres de fabrication, de livraisons, de factures, de virements,.... Un truc qui peut couler une boîte et mettre du monde au chômage du jour au lendemain...
- Wle 09/12/2015 à 20:26 -
dukoidMembre expertoui bien sur, et perdre toutes les données depuis le jour du hack.
j'espere qu'à l'entreprise ou tu bosses tu va pas faire ça
"bonjour, patron ça va ? au fait, j'ai remis la sauvegarde d'il y a 3 jours à cause d'un hack" voilà bon c'est pas grave on as juste perdus toutes les données durant cette période"le 10/12/2015 à 19:36 -
dukoidMembre experttoujours des insultes .. ça deviens gave là. faut te calmer, faire du yoga, aller courir . je ne sais pas mais fais quelque chosele 10/12/2015 à 19:52
-
dlewinMembre confirméBon sang que tu as raison, est-ce par facilité intellectuelle je ne sais: mais c'est factuel.
Arf Python le fait très bien tout seul !le 08/02/2016 à 15:25