Les deux nouveautés principales sont les nouveaux formulaires, newforms, dont j'ai parlé récemment, et l'arrivée d'un outil permettant de tester "industriellement" les applications et de remplir la base de données automatiquement (fixtures).
Les newforms se situent pour le moment dans django.newforms, et les anciens dans django.oldforms. À la prochaine version, les nouveaux formulaires seront placés dans django.forms, et les anciens supprimés. Il est donc de temps de profiter de la 0.96 pour les mettre à jour en douceur.
Les tests sont plus complexes à synthétiser, je vous conseiller de lire la documentation (en anglais). On retiendra la possibilité de charger automatiquement des données pour les besoins du test, ce qui est assez pratique pour gagner du temps. manage.py prend désormais deux nouvelles options : dumpdata et loaddata, qui permettent respectivement de copier les données de la base et d'en insérer.
Une petite modification qui change pas mal de choses : les fichiers URLconfs peuvent désormais appeler directement des fonctions, au lieu de chaînes. Voici concrètement ce que ça peut changer, exemple directement repris du site officiel :
Avant
from django.conf.urls.defaults import *
urlpatterns = patterns('',
('^mavue/$', 'monsite.monapp.views.mavue')
)
Maintenant (il ne s'agit que d'une possibilité, l'ancienne syntaxe fonctionne toujours)
from django.conf.urls.defaults import *
from monsite.monapp.views import mavue
urlpatterns = patterns('',
('^mavue/$', mavue)
)
Ce qui autorise l'inclusion d'un décorateur directement dans le fichier urls.py. Par exemple, ce code ajoute une authentification à une vue générique :
from django.conf.urls.defaults import *
from django.contrib.auth.decorators import login_required
from django.views.generic.list_detail import object_list
from monsite.monapp.models import MonModele
info = {
"queryset" : MonModele.objects.all(),
}
urlpatterns = patterns('',
('^mavue/$', login_required(object_list), info)
)
Enfin, la version requise du module MySQL Python est désormais la 1.2.1p2 ; mais pour ne pas casser les sites ne pouvant effectuer la mise à jour, il est toujours possible d'en utiliser une plus ancienne en passant le paramètre DATABASE_ENGINE de settings.py à "mysql_old".
La publication de cette version a été un peu soudaine, la traduction Française n'est donc pas entièrement à jour... Un patch a été proposé. Pour conclure, une dernière nouveauté certes complètement mineure, mais en étant l'auteur j'en suis honteusement et orgueilleusement fier, le module humanize est désormais localisé. C'est à dire que ne donnera plus "1st" mais 1er (avec même le "er" en exposant). nombre


