Обновление Django до новой версии

Время от времени эта процедура может быть сложной, но обновление до последней версии Django имеет ряд преимуществ:

  • Добавление новой функциональности и различных улучшений

  • Закрытие старых багов

  • Наконец, устаревающие версии Django со временем перестают получать обновления безопасности. (см. Поддерживаемые версии).

  • Если вы будете обновлять Django при выходе каждого нового релиза, это сделает процедуру последующих обновлений менее болезненной и сохранит ваш код в актуальном состоянии.

Ниже изложено несколько вещей, призванных сделать обновление настолько мягким, насколько это вообще возможно.

Обязательно к прочтению

Если это ваше первое обновление, полезно будет прочесть guide on the different release processes.

Впоследствии вы можете ознакомиться с изменениями, которые были сделаны в новых версиях(версии) Django:

  • Прочтите описание изменений каждого ‘финального’ релиза, начиная с релиза вашей версии Django вплоть до того, на который желаете обновиться.

  • Взгляните на срок поддержки интересующей вас версии.

Уделите особое внимание обратной совместимости, чтобы получить чёткое представление о том, что необходимо для успешного обновления.

Зависимости

В большинстве случаев необходимо также обновить пакеты, которые связаны с Django. В случае, если версия Django была выпущена недавно или же какие-то из связанных с ним пакетов недостаточно протестированы, некоторые из таких пакетов могут не поддерживаться в новой версии Django. В таком случае вы можете подождать выхода версии, в которой необходимая функциональность будет реализована.

Установка

Теперь пора перейти к установке новой версии Django. Если вы работаете с virtualenv и предстоит крупное обновление, можете сначала установить новое окружение со всеми связанными с Django пакетами.

Какие именно шаги вам предстоит сделать, зависит от способа, которым был установлен Django. Удобнее всего воспользоваться утилитой pip с флагом --upgrade или же -U:

$ pip install -U Django

pip автоматически деинсталлирует предыдущую версию Django.

Если вы проводили установку иначе, ознакомьтесь с инструкцией об удалении предыдущей версии Django и обратите внимание на инструкцию по его установке.

Тестирование

После настройки нового виртуального окружения запустите набор тестов, чтобы проверить ваши приложения. В Python 2.7+, устаревшие предупреждения по-умолчанию не выводятся. Полезно включить вывод предупреждений, чтобы отображать такие сообщения при тестировании (также можно протестировать приложение вручную при запуске manage.py runserver):

$ python -Wall manage.py test

После запуска тестов, исправьте неработающие участки кода. Пока описание нового релиза ещё не выветрилось из вашей памяти, используйте этот момент, чтобы протестировать новые возможности Django и переписать код, помеченный в свежем релизе как устаревший.

Развёртывание

Когда вы удостоверитесь в том, что ваше приложение работает с новой версией Django, можете двигаться дальше к развёртыванию вашего обновлённого проекта.

Если вы используете систему кэширования, предоставляемую Django, рекомендуется очистить кэш после обновления. В противном случае у вас могут появиться проблемы, например, если вы кэшируете неизменяемые объекты, мы не можем гарантировать, что они будут совместимы с различными версиями Django. К таким моментам можно отнести кэширование объектов HttpResponse как непосредственное, так и посредством декоратора cache_page().