Обновление Django до более новой версии

Хотя иногда это может быть сложный процесс, обновление до последней версии Django имеет несколько преимуществ:

  • Добавлены новые функции и улучшения.
  • Ошибки исправлены.
  • Старая версия Django в конечном итоге больше не будет получать обновления безопасности. (см. Поддерживаемые версии ).
  • Обновление по мере появления каждой новой версии Django делает будущие обновления менее болезненными, так как ваша база кода постоянно обновляется.

Вот несколько вещей, которые необходимо учитывать, чтобы сделать процесс обновления максимально плавным.

Обязательное к прочтению

Если вы делаете обновление впервые, полезно прочитать руководство по различным процессам выпуска .

После этого вам следует ознакомиться с изменениями, внесенными в новые версии Django:

  • Прочтите примечания к выпуску для каждого «окончательного» выпуска, начиная с выпуска, следующего за вашей текущей версией Django, до версии, до которой вы планируете перейти, включительно.
  • Посмотрите на график прекращения поддержки соответствующих версий.

Обратите особое внимание на обратно несовместимые изменения, чтобы получить четкое представление о том, что потребуется для успешного обновления.

Если вы обновляете более чем одну версию функции (например, с 2.0 до 2.2), обычно проще обновлять каждую версию функции постепенно (с 2.0 до 2.1 до 2.2), чем вносить все изменения для каждой версии функции сразу. Для каждого выпуска функций используйте последний выпуск исправлений (например, для 2.1 используйте 2.1.15).

Такой же подход постепенного обновления рекомендуется при переходе с одного LTS на другой.

Зависимости

В большинстве случаев необходимо также обновить до последней версии ваши зависимости, связанные с Django. Если версия Django была выпущена недавно или некоторые из ваших зависимостей не поддерживаются должным образом, некоторые из ваших зависимостей могут еще не поддерживать новую версию Django. В этих случаях вам, возможно, придется подождать, пока не будут выпущены новые версии ваших зависимостей.

Устранение предупреждений об устаревании

Перед обновлением рекомендуется устранить все предупреждения об устаревании, возникающие в вашем проекте при использовании текущей версии Django. Исправление этих предупреждений перед обновлением гарантирует, что вы будете проинформированы об областях кода, которые необходимо изменить.

В Python предупреждения об устаревании по умолчанию отключены. Вы должны включить их с помощью параметра -Waкомандной строки Python илиPYTHONWARNINGS переменная окружения. Например, чтобы показывать предупреждения во время выполнения тестов:

$ python -Wa manage.py test
... \> py -Wa manage.py test

Если вы не используете средство запуска тестов Django, вам может потребоваться также убедиться, что любой вывод консоли не записывается, что может скрыть предупреждения об устаревании. Например, если вы используете pytest :

$ PYTHONWARNINGS=always pytest tests --capture=no

Устраните все предупреждения об устаревании в вашей текущей версии Django, прежде чем продолжить процесс обновления.

Сторонние приложения могут использовать устаревшие API-интерфейсы для поддержки нескольких версий Django, поэтому предупреждения об устаревании в установленных вами пакетах не обязательно указывают на проблему. Если пакет не поддерживает последнюю версию Django, подумайте о том, чтобы поднять проблему или отправить для него запрос на перенос.

Установка

Когда вы будете готовы, пора установить новую версию Django . Если вы используете и это серьезное обновление, вы можете сначала настроить новую среду со всеми зависимостями.virtual environment

Если вы установили Django с помощью pip , вы можете использовать флаг --upgradeили -U:

$ python -m pip install -U Django
... \> py -m pip install -U Django

Тестирование

Когда новая среда настроена, запустите полный набор тестов для своего приложения. Опять же, полезно включить предупреждения об устаревании, чтобы они отображались в тестовых выходных данных (вы также можете использовать флаг, если вы тестируете свое приложение вручную ):manage.py runserver

$ python -Wa manage.py test
... \> py -Wa manage.py test

После выполнения тестов исправьте все сбои. Пока вы еще свежи в памяти примечания к выпуску, возможно, сейчас самое время воспользоваться преимуществами новых функций Django путем рефакторинга кода, чтобы исключить любые предупреждения об устаревании.

Развертывание

Когда вы достаточно уверены, что ваше приложение работает с новой версией Django, вы готовы приступить к развертыванию обновленного проекта Django.

Если вы используете кеширование, предоставляемое Django, вам следует подумать об очистке кеша после обновления. В противном случае вы можете столкнуться с проблемами, например, если вы кэшируете маринованные объекты, так как эти объекты не гарантируют совместимость с pickle в разных версиях Django. Прошлым случаем несовместимости было кэширование маринованных HttpResponseобъектов прямо или косвенно через cache_page() декоратор.

Copyright ©2021 All rights reserved