Как обновить 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 предупреждения об устаревании по умолчанию отключены. Вы должны включить их с помощью параметра командной строки Python -Wa или переменной среды 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().
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/5.0/howto/upgrade-version/