Mise à jour de Django à une version plus récente

Même si le processus peut être parfois un peu complexe, la mise à jour de Django à sa dernière version présente plusieurs avantages :

  • De nouvelles fonctionnalités et améliorations ont été ajoutées.

  • Des bogues ont été corrigés.

  • Les versions plus anciennes de Django ne reçoivent plus de mises à jour de sécurité après un certain temps (voir Supported versions).

  • En mettant à jour Django lors de chaque nouvelle publication, vous vous facilitez le travail sur les mises à jour suivantes car votre code reste toujours à jour.

Voici quelques éléments à considérer pour rendre le processus de migration aussi agréable que possible.

Lecture conseillée

S’il s’agit de votre première mise à jour, il est utile de lire le guide sur les différents processus de publication.

Après cela, nous vous suggérons de vous familiariser avec les modifications qui ont été apportées dans la nouvelle version de Django :

  • Lisez les notes de publication de chaque version « finale » suivant votre version actuelle de Django, jusqu’à la version vers laquelle vous pensez effectuer la mise à jour.

  • Examinez la planification d’obsolescence pour les versions concernées.

Prêtez une attention particulière aux modifications non rétrocompatibles pour avoir une bonne vision de ce qui sera nécessaire pour une mise à jour réussie.

Dépendances

Dans la plupart des cas, il sera aussi nécessaire de mettre à jour à la dernière version des dépendances Django. Si la version de Django a été publiée récemment ou si certaines de vos dépendances ne sont pas bien maintenues, il est possible que certaines dépendances ne prennent pas encore en charge la nouvelle version de Django. Dans ce cas, il se peut que vous deviez patienter jusqu’à ce que de nouvelles versions de vos dépendances aient été publiées.

Resolving deprecation warnings

Before upgrading, it’s a good idea to resolve any deprecation warnings raised by your project while using your current version of Django. Fixing these warnings before upgrading ensures that you’re informed about areas of the code that need altering.

In Python, deprecation warnings are silenced by default. You must turn them on using the -Wall Python command line option or the PYTHONWARNINGS environment variable. For example, to show warnings while running tests:

$ python -Wall manage.py test

If you’re not using the Django test runner, you may need to also ensure that any console output is not captured which would hide deprecation warnings. For example, if you use py.test:

$ PYTHONWARNINGS=all py.test tests --capture=no

Resolve any deprecation warnings with your current version of Django before continuing the upgrade process.

Third party applications might use deprecated APIs in order to support multiple versions of Django, so deprecation warnings in packages you’ve installed don’t necessarily indicate a problem. If a package doesn’t support the latest version of Django, consider raising an issue or sending a pull request for it.

Installation

Quand vous êtes prêt, c’est le moment d’installer la nouvelle version de Django. Si vous utilisez virtualenv et qu’il s’agit d’une mise à jour majeure, il peut être souhaitable de créer d’abord un nouvel environnement contenant toutes les dépendances.

Les étapes précises à suivre dépendent du processus d’installation. La façon la plus pratique est d’utiliser pip avec l’option --upgrade ou -U:

$ pip install -U Django

pip désinstalle aussi automatiquement la version précédente de Django.

Si vous utilisez un autre processus d’installation, vous devrez certainement désinstaller manuellement l’ancienne version de Django ; consultez alors les instructions d’installations complètes.

Tests

When the new environment is set up, run the full test suite for your application. Again, it’s useful to turn on deprecation warnings on so they’re shown in the test output (you can also use the flag if you test your app manually using manage.py runserver):

$ python -Wall manage.py test

Après avoir exécuté les tests, corrigez les éventuelles erreurs. Un conseil : profitez du fait que les notes de publication sont encore fraîches dans votre mémoire pour mettre à jour votre code en tirant avantage des nouvelles fonctionnalités de Django et en éliminant ainsi d’éventuels avertissements d’obsolescence.

Déploiement

Si vous êtes suffisamment confiant dans le bon fonctionnement de votre application avec la nouvelle version de Django, vous êtes prêt à aller de l’avant et à déployer votre projet Django mis à jour.

Si vous utilisez de la mémoire tampon (cache) fournie par Django, il est conseillé de vider cette mémoire après la mise à jour. Sinon, des problèmes peuvent apparaître. Par exemple, si des objets bruts (« pickled ») sont en mémoire tampon, il n’est pas garanti que ces objets puissent être reconstruits, car ce format brut n’est pas toujours compatible d’une version de Django à une autre. Un problème d’incompatibilité connu du passé concernait les objets bruts HttpResponse en mémoire tampon, directement ou indirectement via le décorateur cache_page().

Back to Top