Обновление 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 . Если вы используете один из них, и это серьезное обновление, может быть желательно сначала создать новую среду, содержащую все зависимости.environnement virtuel

Если вы установили 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() .

Copyright ©2020 All rights reserved