URL: https://linuxfr.org/news/sortie-de-django-1-4 Title: Sortie de Django 1.4 Authors: Johan Charpentier patrick_g, baud123, claudex, detail_pratique, Florent Zara et Tobu Date: 2012年03月06日T08:56:37+01:00 License: CC By-SA Tags: django et postgresql Score: 40 Vendredi matin, un an après [la 1.3](http://linuxfr.org/news/sortie-de-django-13), est sortie la version 1.4 du framework Web Django, écrit en Python. Ce framework, basé sur un concept Modèle-Template-Vue (MTV, à rapprocher du 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 (par exemple, 20minutes, Libération.fr, Disqus, Century21, convore, instagram, threadless...) 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é. ---- [Annonce de la sortie de Django 1.4](https://www.djangoproject.com/weblog/2012/mar/23/14/) [Site web du projet](https://www.djangoproject.com/) [Les nouveautés de Django 1.4](https://docs.djangoproject.com/en/dev/releases/1.4/) [Dépêche LinuxFr sur la version 1.3](https://linuxfr.org/news/sortie-de-django-13) [La communauté française Django](http://www.django-fr.org/) [DjangoCong: les rencontres Django](http://rencontres.django-fr.org/2012/) ---- Tout comme [Ruby on Rails](http://fr.wikipedia.org/wiki/RoR), la flexibilité de Django en fait une bonne alternative à mi‐chemin entre le CMS et le langage pur pour la conception d’applications Web agiles. Cette version marque l'abandon de la compatibilité avec Python 2.4, et l'adoption d'un [plan pour la compatibilité avec Python 3](https://www.djangoproject.com/weblog/2012/mar/13/py3k/): la prochaine version abandonnera Python 2.5, et sera compatible à la fois avec Python 2 (2.6 et 2.7), et Python 3 (sans doute la 3.3). Un port Python 3 expérimental est [déjà disponible](https://bitbucket.org/vinay.sajip/django/), mais l'adoption de ce support dans Django devrait donner le signal du départ à tout le paysage logiciel qui l'entoure. Voici la traduction sommaire de quelques points que vous trouverez dans les notes de version : # Notes de version ##Les principales nouveautés * [Gestion des fuseaux horaires](https://docs.djangoproject.com/en/dev/topics/i18n/timezones/): Dans les versions précédentes, Django ne fournissait aucune gestion particulière des fuseaux horaires. Les champs de date et d'heure étaient stockés tels quels, sans indication de fuseau horaire, et c'était au développeur de prendre en charge la gestion. Avec Django 1.4, le framework stocke les dates et l'heure au format [UTC](http://en.wikipedia.org/wiki/Coordinated_Universal_Time) dans la base de données et il traduit ces informations dans le fuseau horaire de l'utilisateur pour affichage dans les templates ou les formulaires. * Améliorations de l'ORM, incluant un support des commandes [SELECT FOR UPDATE](https://docs.djangoproject.com/en/dev/releases/1.4/#select-for-update-support), l'[insertion en masse](https://docs.djangoproject.com/en/dev/releases/1.4/#model-objects-bulk-create-in-the-orm) de données pour améliorer les performances, et [QuerySet.prefetch_related](https://docs.djangoproject.com/en/dev/releases/1.4/#queryset-prefetch-related), une méthode pour précharger des données là ou `select_related()` est inefficace. * Quelques ajouts concernant la sécurité, incluant un [meilleur hachage de mot de passe](https://docs.djangoproject.com/en/dev/releases/1.4/#improved-password-hashing) (avec gestion de [PBKDF2](http://en.wikipedia.org/wiki/PBKDF2) et [bcrypt](http://en.wikipedia.org/wiki/Bcrypt)), [de nouveaux outils pour la signature electronique](https://docs.djangoproject.com/en/dev/releases/1.4/#tools-for-cryptographic-signing), et quelques [amélioration du CSRF](https://docs.djangoproject.com/en/dev/releases/1.4/#csrf-improvements), et un mécanisme de [protection contre le vol de clic](https://docs.djangoproject.com/en/dev/releases/1.4/#simple-clickjacking-protection) simple. * [Une nouvelle version de l'organisation d'un projet Django](https://docs.djangoproject.com/en/dev/releases/1.4/#updated-default-project-layout-and-manage-py) (manage.py par exemple) suivant la grande tradition de tentative de retrait de la magie de ce projet qui roxe du poney. Et si vous n'aimez pas la nouvelle organisation, utilisez des [templates de projets et d'application personnalisés](https://docs.djangoproject.com/en/dev/releases/1.4/#custom-project-and-app-templates)! * [Support des tests intégrés aux navigateurs](https://docs.djangoproject.com/en/dev/releases/1.4/#support-for-in-browser-testing-frameworks) (tel l'outil [Selenium](http://seleniumhq.org/)). Tous ces changements se sont faits dans un respect de la politique de stabilité d’API. C’est pourquoi Django 1.4 apporte son lot d’éléments mis en dépréciation. Cependant, certains changements ne sont pas rétro‐compatibles et il faut consulter la [documentation relative à ce sujet](https://docs.djangoproject.com/en/dev/releases/1.4/#backwards-incompatible-changes-in-1-4). ##Les autres changements * [Gestion de WSGI](https://docs.djangoproject.com/en/dev/releases/1.4/#improved-wsgi-support): Un fichier `wsgi.py` est désormais fourni à la création d'un projet. * [Analyse HTML pour les tests](https://docs.djangoproject.com/en/dev/releases/1.4/#html-comparisons-in-tests) : Fonctions pour analyser l'HTML et améliorer les recherches de correspondance * Tous les templates et l'interface d'administration utilisent désormais le doctype HTML5. * L'interface d'administration permet maintenant de créer des [filtres personnalisés](https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_filter) et autorise le tri sur plusieurs colonnes. * Une infrastructure de [signature cryptographique des cookies](https://docs.djangoproject.com/en/dev/topics/http/sessions/#cookie-session-backend) est mise en place. * La fonction de `form wizard` a été réécrite. * Dans `django.core.urlresolvers`, une version [paresseuse](http://fr.wikipedia.org/wiki/%C3%89valuation_paresseuse) de `reverse` a été mise en place sous le nom de `reverse_lazy`. * Nouveau filtre `truncatechars` qui permet de tronquer une chaîne de caractères [à la longueur spécifiée](https://docs.djangoproject.com/en/dev/ref/templates/builtins/#std:templatefilter-truncatechars). * Une option de protection contre le [clickjacking](http://fr.wikipedia.org/wiki/Clickjacking) est maintenant disponible. * La protection contre les attaques de type [CSRF](http://fr.wikipedia.org/wiki/Cross-site_request_forgery) (Cross-site request forgery) est [renforcée](https://docs.djangoproject.com/en/dev/releases/1.4/#csrf-improvements). * Django 1.4 permet maintenant de [filtrer les informations sensibles](https://docs.djangoproject.com/en/dev/releases/1.4/#error-report-filtering) dans les rapports d'erreur. * Support IPv6 étendu. ## Rétro‐compatibilité Notez que la liste n'est pas exhaustive et qu'il faut donc impérativement [consulter les notes de version](https://docs.djangoproject.com/en/dev/releases/1.4/#backwards-incompatible-changes-in-1-4) avant toute mise à jour. Parmi cette liste, citons : * Au vu de son _impact_ dans le nouveau mécanisme de sécurité, le paramètre `SECRET_KEY` est maintenant requis. * L'accès aux fichiers statiques de l'espace d'administration se fait désormais par `django.contrib.staticfiles` et `ADMIN_MEDIA_PREFIX` devient inutile * La liste des navigateurs _supportés_ par l'interface d'administration s'amenuise (bye bye IE6) * CSS class names in admin forms * [Des problèmes peuvent survenir](https://docs.djangoproject.com/en/dev/releases/1.4/#compatibility-with-old-signed-data) si vous passez directement de la 1.2 à la 1.4 à cause du changement sur la signature des cookies et sessions * Changement dans la sérialisation des temps avec JSON * Les exceptions `MySQLdb.OperationalError` sont remplacées par `django.db.utils.DatabaseError` * La protection CSRF a été étendue aux méthodes `PUT` et `DELETE` * Les diverses possibilités d'appel au décorateur `cache_page` ont été simplifiées. * La version minimum de PostgreSQL qui est requise est la 8.2. * Les Request exceptions sont maintenant enregistrées par défaut, et ce quelque soit la valeur de `DEBUG`. * Les fonctions présentes auparavant dans le module `django.conf.urls.defaults` sont maintenant présentes dans le module `django.conf.urls`. * La fonction `django.contrib.databrowse` est dépréciée car non utilisée. * La syntaxe des attributs `is_safe` et `needs_autoescape` a été modifiée. * La recherche des INSTALLED_APPS via des caractères joker a été supprimée (non utile et peu conforme aux pratiques Python). * L'attribut `HttpRequest.raw_post_data` a été renommée en `HttpRequest.body` * La correction d'un bug sur `django.contrib.sitemaps` a des conséquences en terme de performances. Il faut utiliser l'[infrastructure de cache](https://docs.djangoproject.com/en/dev/topics/cache/) pour contrer cette régression. * La fonction `django.core.management.setup_environ` est dépréciée car jugée inutile (il est possible d'utiliser `django.conf.settings.configure` à la place). * La fonction `django.core.management.execute_manager` est dépréciée car elle est redondante avec `django.core.management.execute_from_command_line`. Malgré la mise en place du [nouveau template de projet par défaut](https://docs.djangoproject.com/en/dev/releases/1.4/#updated-default-project-layout-and-manage-py) et les deux derniers changements cités, l'ancien fichier `manage.py` reste utilisable. Cependant, il enverra un avertissement `DeprecationWarning` à partir de la version 1.5, donc ne perdez pas de temps pour mettre à jour ce fichier. De manière générale, la dépréciation d'une fonction dans Django suit la chronologie suivante: - Django 1.4 : PendingDeprecationWarning : avertissement silencieux qui peut être affiché via l'option « -Wd » de l’interpréteur. - Django 1.5 : DeprecationWarning : avertissement visible. - Django 1.6 : retrait. # 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 liste de diffusion que vous trouverez sur le site, ou mieux : passez nous voir sur le canal IRC « #django-fr » de Freenode. ## [DjangoCong](http://rencontres.django-fr.org/2012/)  Le 14 et 15 avril se déroulera près de Montpellier (Carnon-plage) la DjangoCong, rencontre de la communauté de développeurs Django francophones. Il est encore possible d’aider dans cette aventure la toute jeune association Django-fr. Les niveaux de sponsorisation sont les suivants : * 200 € : poney motivé * 400 € : poney généreux * 37 000€ : poney président En devenant sponsor, vous serez mentionné dans les communications autour de l’évènement, ainsi qu’en début et fin d’évènement. NdA : merci à Tobu, detail_pratique et patrick_g pour l’aide apportée à la réalisation de cette dépêche.