Sortie de Django 1.2

Posté par  (site web personnel) . Modéré par patrick_g.
Étiquettes :
30
18
mai
2010
Python
Lundi soir est sortie la version 1.2 du framework web Django, écrit en Python. 11 mois après la 1.1, et presque 2 ans après la version 1.0.

Ce framework, basé sur un concept Modèle-Vue-Contrôleur (MVC), est conçu pour le développement rapide et reprend la plupart des grands principes de Python (« Explicit is better than implicit », notamment), ce qui en fait la plate-forme de développement web idéale pour les perfectionnistes sous pression.

De plus en plus de sites utilisent Django (comme par exemple Bitbucket.org) pour sa flexibilité et pour le nombre d'applications Django réutilisables, qui ne cesse de croître.

Je vous propose de découvrir les quelques nouveautés que vous offrent les développeurs Django et toute la communauté. Voici la traduction sommaire de quelques points que vous trouverez dans les notes de version :

Support des bases de données multiples
Django peut désormais discuter avec plusieurs bases de données. En plus de pouvoir configurer des schémas simples (comme une base de données en lecture seule et une pour l'écriture), il est possible de faire des routeurs qui choisiront la base de données en fonction de paramètres comme le nom du modèle ou de l'application. Enfin, dans vos QuerySets, vous pourrez choisir sur quelle base de données vous voulez lire ou enregistrer un objet. La seule limitation est l'impossibilité de faire des relations sur plusieurs bases de données.

Envoi de mails
Exit le simple client SMTP, qui laisse sa place à une API générique. Vous pourrez utiliser cette dernière pour préciser une autre manière d'envoyer vos mails. Des implémentations sont déjà fournies pour les re-diriger vers un fichier, en mémoire, sur la console, ou même chez votre ami Dave Null.

Notifications
Si vous avez des notifications à envoyer aux utilisateurs authentifiés ou anonymes de votre site, vous pourrez le faire avec ce nouveau framework de messages. Utilisation des niveaux standards (DEBUG, INFO, ERROR...) ou ajout de tags personnalisés pour la CSS et enfin, comme pour le reste, vous pourrez choisir sur quel backend il repose : cookies, session, ou votre propre système de stockage.

Clés naturelles
Lors d'une sérialisation de modèles, les clés étrangères étaient désignées par l'id de l'objet concerné. Désormais, il est possible de préciser dans un tuple les champs du modèle qui permettent de faire le lien avec un autre modèle. L'export et l'import de fixtures incluent donc ce mécanisme.

Modèles :
  • Ajout du BigIntergerField, entier de 64 bits ;

  • Permissions au niveau des objets : les bases sont posées pour une gestion des permissions au niveau des objets ; même si ce n'est pas vraiment intuitif on peut déjà se servir de cet embryon d'API sur nos projets. La fonctionnalité sera pleinement opérationnelle dans les prochaines versions ;

  • Validation des modèles : comme pour les formulaires, vous pouvez définir des méthodes pour valider les champs de vos modèles.

Le client de test :
  • Les tests quittent proprement si vous les arrêtez avec un Ctrl-C en cours de route ;

  • L'option --failfast coupe les tests à la première erreur.

L'interface d'administration :
  • Ajout de l'option readonly_fields qui permet de rendre des champs non éditables dans l'interface d'administration ;

  • L'interface d'administration utilise désormais la bibliothèque jQuery. À noter que cette dernière n'a été ajoutée que dans les médias de l'administration. En dehors de son interface d'administration, Django reste donc agnostique en ce qui concerne votre projet.

Templates :
  • Tag if : bye bye ifnotequal ! Bienvenue à :
    {% if a != b %}
  • Cache de templates : il est maintenant possible de mettre en cache les fichiers templates (donc avant leur rendu).
Autres :
Rétro-compatibilité
Malgré toute l'attention qui est portée sur la stabilité de l'API à long terme, certains points sont à vérifier si vous voulez mettre à jour. N'hésitez pas vous rendre sur la page listant les changements dans Django 1.2 pour éviter toute mauvaise surprise lors de la mise à jour.
  • Cross-Site Request Forgery : gros changement dans l'utilisation de la protection contre ce type d'attaque. Pour mettre à jour, suivez le guide ;

  • Auparavant le client de test renvoyait un code de retour correspondant au nombre de tests en erreur, ce qui n'est plus le cas ;

  • Arrêt du support de Python 2.3.

Communauté francophone
Toutes les bonnes volontés sont demandées pour faire vivre le site de la communauté francophone de Django. Rendez-vous sur la mailing-list que vous trouverez sur le site, ou mieux : passez nous voir sur le canal IRC #django-fr de Freenode, où vous pourrez voir des geeks tout bronzés après leur DjangoCong qui s'est déroulée le mois dernier à Marseille.

Aller plus loin

  • # Excellent framework...

    Posté par  . Évalué à 8.

    Content de cette sortie avec quelques jours de retard sur le planning prévisionnel.

    Je l'utilise pour un petit site avec quelques données dynamiques. L'interface d'administration auto-générée est vraiment très impressionnante. Je n'ai pas de critique particulière, si ce n'est que j'ai perdu les permissions des utilisateurs, meme en superuser : j'ai donc du refaire l'associations à la main dans la base SQL.

    Les filtres des templates sont vraiment très pratiques. Toutes les opérations courantes sont accessibles (formatage de la casse, des dates, ...). Après quelques batailles avec l'UTF-8, je ne peux plus me passer de Django.

    Bonne continuation à ce framework.
  • # Applications Django réutilisables ...

    Posté par  . Évalué à 5.

    où peut-on avoir une liste de ces applications, je n'ai rien trouvé sur le site du projet?

    Merci!
  • # SQLAlchemy

    Posté par  . Évalué à 3.

    A quand un support de SQLAlchemy .. ?
    • [^] # Re: SQLAlchemy

      Posté par  . Évalué à 2.

      A ma connaissance, les différents composants de Django (système de templates, ORM, ...) sont faiblement couplés entre eux. Il est donc (en théorie) relativement aisé de remplacer l'un d'entre eux par un composant plus générique.
      Le problème c'est que tu ne peux plus alors utiliser certains composants tout faits comme l'interface d'admin ou les vues génériques.

      Cela dis, je regrette comme toi que les développeurs de Django passent leur temps à réinventer la roue plutôt que de réutiliser des composants plus avancés et éprouvés (comme SQLAlchemy). C'est sûrement lié à des raisons historiques (trop tard pour revenir en arrière) et probablement aussi une certaine volonté de garder le contrôle des évolutions.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.