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