Se rendre au contenu

Django 6.0 est sorti

3 décembre 2025 par
Django 6.0 est sorti
Makersquad

Date de sortie : 3 décembre 2025

Documentation officielle : Django 6.0 release notes

Django 6.0 marque un cap avec trois ajouts structurants : un framework de tâches en arrière-plan intégré, le support natif de Content Security Policy et les template partials. Python 3.12 minimum.

Les nouveautés principales

Tâches en arrière-plan intégrées

Plus besoin de Celery pour les cas simples. Django embarque maintenant un système de tâches :

from django.tasks import task

@task()
def send_welcome_email(user_id):
    user = User.objects.get(id=user_id)
    # ... envoyer l'email

# Mettre en file d'attente
send_welcome_email.enqueue(user_id=42)

Des backends de développement et de test sont fournis. Pour la production, des backends tiers s’intègreront avec Redis, RabbitMQ, etc.

Content Security Policy (CSP)

Framework complet pour gérer les en-têtes CSP :

# settings.py
MIDDLEWARE = [
    # ...
    "django.middleware.csp.ContentSecurityPolicyMiddleware",
]

# Utiliser les constantes Django
from django.conf.global_settings import CSP_SELF, CSP_NONE

CONTENT_SECURITY_POLICY = {
    "default-src": [CSP_SELF],
    "script-src": [CSP_SELF, "https://cdn.example.com"],
    "style-src": [CSP_SELF],
}

Le context processor fournit automatiquement un nonce pour les scripts inline.

Template partials

Réutiliser des fragments de template sans créer de fichiers séparés :

{% partialdef user_card %}
  <div class="card">
    <h3>{{ user.name }}</h3>
    <p>{{ user.email }}</p>
  </div>
{% endpartialdef %}

{% partial "base.html#user_card" %}

Fonctionne aussi avec get_template(), render() et {% include %}. La syntaxe template_name#partial_name est intuitive et évite la prolifération de micro-templates.

Nouvelle API email Python

Django migre vers email.message.EmailMessage (la nouvelle API Python) :

from django.core.mail import EmailMessage

msg = EmailMessage(
    subject="Bienvenue",
    body="<h1>Hello</h1>",
    from_email="[email protected]",
    to=["[email protected]"],
)
msg.content_subtype = "html"
msg.send()

L’ancienne API avec SafeMIMEText/SafeMIMEMultipart est dépréciée.

Pagination asynchrone

Nouvelles classes AsyncPaginator et AsyncPage pour les vues async :

from django.core.paginator import AsyncPaginator

async def list_articles(request):
    paginator = AsyncPaginator(Article.objects.all(), per_page=25)
    page = await paginator.aget_page(request.GET.get("page"))
    return render(request, "articles.html", {"page": page})


Autres améliorations

  • AnyValue aggregate pour SQLite, MySQL, Oracle et PostgreSQL 16+
  • Variable forloop.length dans les boucles de templates
  • GeneratedField rafraîchi automatiquement après save (avec RETURNING)
  • Font Awesome 6.7.2 dans l’admin
  • MariaDB 10.5 abandonné
  • DEFAULT_AUTO_FIELD passe a BigAutoField par défaut

Échanger avec un expert Django

Nous revenons vers vous sous 24h.


Chez Makersquad, nous accompagnons nos clients dans la conception d’application modernes et performantes avec Django .Que vous souhaitiez lancer une nouvelle API, moderniser une architecture existante ou améliorer les performances de vos services backend, notre équipe met son expertise à votre disposition pour concevoir des solutions fiables, rapides et parfaitement adaptées à vos enjeux métier.


À retenir

Django 6.0 est une release riche. Les tâches en arrière-plan intégrées répondent a un besoin récurrent, même si Celery restera indispensable pour les cas avancés. Le CSP natif et les template partials sont des ajouts pragmatiques qui vont simplifier beaucoup de projets. Python 3.12 minimum : vérifiez votre version avant de migrer.

Sources : Django 6.0 release notesAdam Johnson - What’s new in 6.0

Starlette 0.52
State typé en syntaxe dictionnaire