Spec-Zone.ru › Django 5.2

Как обновить 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, следует рассмотреть возможность очистки кэша после обновления. В противном случае у вас могут возникнуть проблемы, например, если вы кэшируете сериализованные объекты, так как эти объекты не гарантированно совместимы с сериализацией между версиями Django. В прошлом наблюдалась несовместимость при кэшировании сериализованных HttpResponse объектов, как напрямую, так и косвенно через декоратор cache_page().

© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/5.2/howto/upgrade-version/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API