Django 5.0 vient d’arriver il y a quelques jours , apportant son lot de mises à jour et de fonctionnalités passionnantes. Dans cette article, nous allons explorer quelques-unes des améliorations notables qui devraient susciter l’intérêt des développeurs Django.
Table des matières
Toggle- Filtres de Facettes dans l'Interface d'Administration
L’une des caractéristiques phares de Django 5.0 est l’introduction des filtres de facettes dans l’interface d’administration. Désormais, lorsque vous appliquez des filtres, les comptages de facettes sont directement affichés dans la liste des modifications administratives. De plus, vous avez la possibilité de personnaliser ce comportement grâce au nouvel attribut « ModelAdmin.show_facets ».
- Modèles Simplifiés pour le Rendu des Champs de Formulaire
Django 5.0 introduit le concept de « field group » (groupe de champs) et de modèles de groupe de champs. Cela simplifie considérablement le rendu des éléments associés à un champ de formulaire Django, tels que son étiquette, son widget, son texte d’aide et ses erreurs.
Auparavant, le code de rendu ressemblait à ceci :
<form>
...
<div>
{{ form.name.label_tag }}
{% if form.name.help_text %}
<div class="helptext" id="{{ form.name.id_for_label }}_helptext">
{{ form.name.help_text|safe }}
</div>
{% endif %}
{{ form.name.errors }}
{{ form.name }}
<div class="row">
<div class="col">
{{ form.email.label_tag }}
{% if form.email.help_text %}
<div class="helptext" id="{{ form.email.id_for_label }}_helptext">
{{ form.email.help_text|safe }}
</div>
{% endif %}
{{ form.email.errors }}
{{ form.email }}
</div>
<div class="col">
{{ form.password.label_tag }}
{% if form.password.help_text %}
<div class="helptext" id="{{ form.password.id_for_label }}_helptext">
{{ form.password.help_text|safe }}
</div>
{% endif %}
{{ form.password.errors }}
{{ form.password }}
</div>
</div>
</div>
...
</form>
Désormais, avec Django 5.0, vous pouvez simplifier tout cela de la manière suivante :
<form>
...
<div>
{{ form.name.as_field_group }}
<div class="row">
<div class="col">{{ form.email.as_field_group }}</div>
<div class="col">{{ form.password.as_field_group }}</div>
</div>
</div>
...
</form>
La méthode « as_field_group() » rend les champs en utilisant le modèle « django/forms/field.html » par défaut, mais vous pouvez la personnaliser en fonction de votre projet, du champ ou de la demande.
- Valeurs par Défaut Calculées par la Base de Données
Une autre fonctionnalité majeure de Django 5.0 est l’introduction du paramètre « Field.db_default », qui permet de définir une valeur par défaut calculée par la base de données. Par exemple :
from django.db import models
from django.db.models.functions import Now, Pi
class MyModel(models.Model):
age = models.IntegerField(db_default=18)
created = models.DateTimeField(db_default=Now())
circumference = models.FloatField(db_default=2 * Pi())
- Champ de Modèle Généré par la Base de Données
Le nouveau « GeneratedField » permet la création de colonnes générées par la base de données. Ce champ peut être utilisé avec tous les moteurs de base de données pris en charge pour créer un champ calculé à partir d’autres champs. Par exemple :
from django.db import models
from django.db.models import F
class Square(models.Model):
side = models.IntegerField()
area = models.GeneratedField(expression=F("side") * F("side"), db_persist=True)
- Plus d'Options pour Déclarer les Choix de Champ
Django 5.0 offre davantage de flexibilité pour déclarer les valeurs des choix, que ce soit pour les champs de modèle ou les champs de formulaire. Avant, les choix devaient être soit une liste de 2-tuples, soit une sous-classe d’un type énuméré, ce qui nécessitait d’accéder à l’attribut « .choices » pour fournir les valeurs dans la forme attendue.
Désormais, Django 5.0 permet d’accepter une correspondance ou une fonction à la place d’un itérable. De plus, il n’est plus nécessaire d’utiliser « .choices » directement pour étendre les types énumérés. Par exemple :
from django.db import models
Medal = models.TextChoices(« Medal », « GOLD SILVER BRONZE »)
SPORT_CHOICES = { # Utilisation d’une correspondance au lieu d’une liste de 2-tuples.
« Arts martiaux »: {« judo »: « Judo », « karaté »: « Karaté »},
« Raquette »: {« badminton »: « Badminton », « tennis »: « Tennis »},
« inconnu »: « Inconnu »,
}
def get_scores():
return [(i, str(i)) for i in range(10)]
class Winner(models.Model):
name = models.CharField(…)
medal = models.CharField(…, choices=Medal) # L’utilisation de « .choices » n’est plus nécessaire.
sport = models.CharField(…, choices=SPORT_CHOICES)
score = models.IntegerField(choices=get_scores) # Une fonction est autorisée.
En coulisse, les choix fournis sont normalisés en une liste de 2-tuples sous une forme canonique chaque fois que la valeur des choix est mise à jour.
En résumé, les mises à jour de Django 5.0 offrent plus de simplicité et de flexibilité aux développeurs, facilitant ainsi la création d’applications web Django plus puissantes et efficaces. Que vous soyez débutant ou développeur chevronné, ces améliorations vous feront gagner du temps et vous permettront de créer des applications web Django de haute qualité.
Toutes les nouveautés précédemment citées seront utilisées dans le projet que nous réalisons ensemble. Source : https://docs.djangoproject.com/en/dev/releases/5.0/