Обновление Django до новой версии
Хотя иногда это может быть сложным процессом, обновление до последней версии Django имеет несколько преимуществ:
- Добавляются новые функции и улучшения.
- Исправляются ошибки.
- Старые версии Django в конечном итоге больше не будут получать обновления безопасности. (см. Поддерживаемые версии).
- Обновление по мере выхода каждой новой версии Django делает будущие обновления менее болезненными, поддерживая ваш код актуальным.
Вот некоторые моменты, которые следует учитывать, чтобы сделать процесс обновления как можно более гладким.
Необходимое чтение
Если вы впервые выполняете обновление, полезно прочитать руководство по различным процессам выпуска.
После этого вы должны ознакомиться с изменениями, внесенными в новую версию Django:
- Прочитайте примечания к выпуску для каждого «окончательного» выпуска после вашей текущей версии Django, вплоть до версии, до которой вы планируете обновить.
- Посмотрите график устаревания для соответствующих версий.
Обращайте особое внимание на несовместимые с обратной совместимостью изменения, чтобы получить четкое представление о том, что потребуется для успешного обновления.
Зависимости
В большинстве случаев потребуется обновить до последней версии ваших зависимостей, связанных с Django. Если версия Django была выпущена недавно или некоторые из ваших зависимостей плохо поддерживаются, некоторые из ваших зависимостей могут пока не поддерживать новую версию Django. В этих случаях вам может потребоваться подождать, пока не будут выпущены новые версии ваших зависимостей.
Устранение предупреждений об устаревании
Перед обновлением рекомендуется устранить все предупреждения об устаревании, поднятые вашим проектом при использовании вашей текущей версии Django. Устранение этих предупреждений перед обновлением гарантирует, что вы будете проинформированы о тех областях кода, которые нуждаются в изменении.
В Python предупреждения об устаревании по умолчанию отключаются. Необходимо включить их, используя параметр командной строки Python -Wall или переменную среды PYTHONWARNINGS. Например, для отображения предупреждений при запуске тестов:
$ python -Wall manage.py test
Если вы не используете Django test runner, вам может потребоваться также убедиться, что любой вывод консоли не захватывается, что могло бы скрыть предупреждения об устаревании. Например, если вы используете py.test:
$ PYTHONWARNINGS=all py.test tests --capture=no
Устраните все предупреждения об устаревании с вашей текущей версией Django перед продолжением процесса обновления.
Приложения сторонних разработчиков могут использовать устаревшие API для поддержки нескольких версий Django, поэтому предупреждения об устаревании в установленных пакетах необязательно указывают на проблему. Если пакет не поддерживает последнюю версию Django, рассмотрите возможность создания проблемы или отправки запроса на вытягивание для него.
Установка
Когда вы будете готовы, пришло время установить новую версию Django. Если вы используете virtualenv, и это значительное обновление, вам может потребоваться сначала настроить новую среду со всеми зависимостями.
Точные шаги, которые вам понадобятся, зависят от вашего процесса установки. Наиболее удобным способом является использование pip с флагом --upgrade или -U:
$ pip install -U Django
pip также автоматически удаляет предыдущую версию Django.
Если вы используете другой процесс установки, вам может потребоваться вручную удалить старую версию Django, и вам следует обратиться к полным инструкциям по установке.
Тестирование
После настройки новой среды запустите полный набор тестов для вашего приложения. Опять же, полезно включить предупреждения об устаревании, чтобы они отображались в выводе тестов (вы также можете использовать флаг, если вы тестируете свое приложение вручную, используя manage.py runserver):
$ python -Wall 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/1.9/howto/upgrade-version/