Vue d'ensemble
Django 1.6, publié le 6 novembre 2013, marque le passage au support complet de Python 3. Là où Django 1.5 offrait un support expérimental, cette version est pleinement compatible avec Python 3.2 et 3.3. Elle simplifie également la gestion des transactions avec l'autocommit par défaut et le décorateur atomic.
Fonctionnalités principales
Gestion des transactions simplifiée
Django 1.6 active l'autocommit par défaut sur les bases de données, conformément au comportement standard SQL. Le décorateur et gestionnaire de contexte atomic remplace les anciens décorateurs de transaction, offrant une API unifiée et intuitive pour encapsuler des blocs de code dans une transaction.
from django.db import transaction
# Utilisation comme décorateur
@transaction.atomic
def transferer_fonds(compte_source, compte_dest, montant):
"""Transfère des fonds entre deux comptes."""
compte_source.solde -= montant
compte_source.save()
compte_dest.solde += montant
compte_dest.save()
# Utilisation comme gestionnaire de contexte
def inscrire_participant(evenement, utilisateur):
"""Inscrit un participant et met à jour le compteur."""
with transaction.atomic():
Inscription.objects.create(
evenement=evenement,
participant=utilisateur,
)
evenement.nb_inscrits += 1
evenement.save()
Pool de connexions
Le réglage CONN_MAX_AGE permet de réutiliser les connexions à la base de données entre les requêtes HTTP, évitant le coût d'ouverture et de fermeture de connexion à chaque requête. Cela améliore sensiblement les performances des applications à fort trafic.
# settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'ma_base',
'CONN_MAX_AGE': 600, # Connexion réutilisée pendant 10 minutes
}
}
# CONN_MAX_AGE = 0 : fermer après chaque requête (défaut)
# CONN_MAX_AGE = None : connexion persistante indéfiniment
# CONN_MAX_AGE = 600 : garder la connexion 10 minutes
