Spec-Zone.ru › Django 3.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/3.2/howto/upgrade-version/

Spec-Zone.ru

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