Accueil / Blog / Métier / 2021 / Comment migrer vers une version récente de Django ?

Comment migrer vers une version récente de Django ?

Par Yann Fouillat — publié 15/04/2021
Que ce soit pour avoir les dernières fonctionnalités ou les correctifs de sécurité, rester sur une version récente de Django est important pour la pérennité de son projet.
Comment migrer vers une version récente de Django ?

Les versions de Django ne sont pas supportées éternellement. Les versions LTS (Long Term Support) sont maintenues pendant 3 ans, tandis que les autres versions sont maintenues un peu plus d'un an à peine. On peut également avoir besoin d'une nouvelle fonctionnalité, ou alors les modules que l'on utilise ne fonctionnent plus avec une version de Django plus ancienne.

Dans tous les cas, il est important de prévoir dès le début de pouvoir migrer son code vers une version plus récente de Django.

Les bases

Django explique très bien dans sa documentation comment faire.

Je rajouterai juste une étape : s'assurer que son application a des tests unitaires couvrant la majorité du code.

Pour résumer, les étapes sont les suivantes :

  • Mettre à jour les dépendances de son projet hors Django

Cela inclut la version de Python, de la base de données, des modules Django… Si certains modules ne sont pas encore compatibles, alors il faut vérifier si la migration de version est possible à faire soi-même ou s'il est nécessaire de changer complètement de dépendance (certains projets ne sont plus suivis et prendre le temps d'en prendre un maintenu régulièrement sera beaucoup plus rentable sur le long terme).

  • Faire tourner les tests unitaires en activant les warnings :
python -Wa manage.py test
  • Corriger tous les warnings d'obsolescence
  • Bien regarder les changements incompatibles entre les versions

Ceux-ci peuvent être trouvés dans les notes de la version, en bas. Par exemple les changements incompatibles dans la 1.8.

  • Mettre à jour Django :
python -m pip install -U Django
  • Le format de certains settings peut changer. Pour vérifier la syntaxe de la nouvelle version, on peut instancier un nouveau site Django avec cette version pour voir le fichier de settings par défaut
  • Refaire tourner ses tests et corriger les erreurs

Les fonctionnalités obsolètes sont indiquées dans les notes de mises à jour. Par exemple pour la 1.8. On trouvera également les fonctionnalités obsolètes supprimées dans cette version.

Tout cela fonctionne bien lorsque l'on a seulement quelques versions de retard. On préférera quand même mettre régulièrement à jour notre projet pour éviter d'avoir trop de travail d'un coup, même si ce n'est pas toujours possible, comme on le verra dans la suite.

La liste complète des notes de mise à jour est disponible sur le site de Django.

Dans la pratique

En pratique, il faudra déjà faire un choix. L'application va-t-elle être maintenue régulièrement et peut-on donc installer toutes les versions de Django (LTS et versions intermédiaires) ? Ou au contraire faut-il mieux viser les LTS uniquement pour avoir une base plus stable et moins de montées de versions à faire ?

Ensuite, tout dépend de la version de Django actuelle de notre projet. Les versions en dessous de la 1.11 sont en général plus complexes, car de nombreuses fonctionnalités ont été développées sur ces versions.

De manière générale, il est conseillé de faire les mises à jours par palier, de LTS en LTS. Le passage à la 2.0 est un peu spécial car c'est la première version à ne plus supporter Python 2. Les montées de version seraient donc à faire dans l'ordre suivant :

  • Django < 1.8 => Django 1.8
  • Django 1.8 => Django 1.11
  • Python 2 => Python 3
  • Django 1.11 => Django 2.0
  • Django 2.0 => Django 2.2
  • Django 2.2 => Django 3.2
  • Django 3.2 => Django 4.2
  • ...

Cela sans oublier de faire suivre les dépendances à chaque étape. Il faudra parfois prendre une version plus ancienne de la dépendance, la dernière version n'étant pas compatible avec la version cible de Django.

Il est parfois compliqué de trouver la bonne version, dans ce cas, il faudra penser à regarder les notes de version ou les dates de sorties des versions de la dépendance en question. Une nouvelle version de Django étant souvent rapidement suivie par la sortie de dépendances compatibles, pour les modules qui sont maintenus convenablement.

En cas de difficulté, il ne faut pas hésiter à passer par des versions de Django intermédiaire.

Désormais vous n'avez désormais plus d'excuse pour garder votre vielle version de Django !

Retrouvez nos Formation Django ainsi que nos Réalisations Django.

ABONNEZ-VOUS À LA NEWSLETTER !
Voir aussi
Accéder à sa base de données PostgreSQL depuis QGis ou pgAdmin de manière sécurisée Accéder à sa base de données PostgreSQL depuis QGis ou pgAdmin de manière sécurisée 30/12/2020

Comment interconnecter ses outils de travail sans mettre en péril la sécurité du système ...

La Haute-Garonne met à l’honneur l’application Geotrek dans son magazine 08/06/2021

Le magazine Haute-Garonne du mois de mai-juin 2021 présente le site marando.haute-garonne.fr

Créer un tag d'inclusion avec paramètres dans Django 22/12/2020

La bibliothèque de tags interne permet d'enregistrer des tags avec paramètres ou des tags ...

Présentation de django-admin-watchdog Présentation de django-admin-watchdog 12/11/2020

Comment garder une trace des erreurs Django en toute simplicité.

Présentation de django-tracking-fields Présentation de django-tracking-fields 03/11/2020

Suivi de modification d'objets Django